小编tch*_*ick的帖子

为什么sonaqube gradle插件会创建jacoco-overall.exec文件?

在我们的多模块gradle构建中,我们使用jacoco来测量代码覆盖率,我们正在创建一个聚合的jacoco-exec文件.要使sonarqube插件使用此文件来创建报告,我们将其配置如下:

sonarqube {
    properties {
        property "sonar.jacoco.reportPath", "$project.rootDir/build/jacoco/jacoco.exec"
    }
}
Run Code Online (Sandbox Code Playgroud)

当使用gradle sonarqube运行sonarqube插件时,它会输出以下消息:

10:56:00.064 INFO  - Analysing C:\A\Projekte\sqs\git\build\sonar\de.kvb.sqs_admin-db\jacoco-overall.exec
10:56:00.116 INFO  - No information about coverage per test.
10:56:00.116 INFO  - Sensor JaCoCoOverallSensor done: 116 ms
...
10:56:00.718 INFO  - Sensor JaCoCoSensor...
10:56:00.720 INFO  - Analysing C:\A\Projekte\sqs\git\build\jacoco\jacoco.exec
10:56:00.738 INFO  - No information about coverage per test.
...
10:56:06.442 INFO  - Analysing C:\A\Projekte\sqs\git\build\sonar\de.kvb.sqs_admin-gui\jacoco-overall.exec
10:56:06.453 INFO  - No information about coverage per test.
10:56:06.453 INFO  - Sensor JaCoCoOverallSensor done: 31 ms
...
10:56:06.833 INFO …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco sonar-runner sonarqube

5
推荐指数
0
解决办法
274
查看次数

如何从spring数据代码中清晰地(物理地)分离域层?

在我的DDD-by-the-book应用程序中,我在域层中有一个这样的存储库定义:

public interface CustomerRepository {
    Customer findById(long id);
    ...
}
Run Code Online (Sandbox Code Playgroud)

数据库集成层包含此接口的实现,如下所示:

public class CustomerDao implements CustomerRepository {
    public Customer findById(long id) {
        // access EntityManager or JDBCTemplates or ...
    }
}
Run Code Online (Sandbox Code Playgroud)

每个层都有一个模块,数据库模块依赖于域和所有集成库(例如hibernate),而域模块依赖于任何东西.因此,我们对问题进行了清晰的分离,并且没有DDD提出的域的"技术"依赖性.因此,我可以通过创建适当的存储库实现从数据库切换到内存中持久性.使用的实现在我的应用程序层中配置.

为数据库访问实现存储库很糟糕,因为我们有Spring Data,所以不再需要了.要使用spring数据,我必须像这样定义一个存储库.

public interface CustomerRepository implements Repository<Customer, Long> {
    ....
Run Code Online (Sandbox Code Playgroud)

这意味着,由于存储库接口定义在我的域层中,我现在将我的域层依赖于"技术"库.切换到内存中实现时,我的应用程序中也会有spring-data类.我想,这有点味道.

你觉得怎么样?你怎么处理这个?是否可以使用spring数据并且没有来自我的域层的依赖?

谢谢

(顺便说一句:我的业务对象的JPA注释,因此我的域名模块具有依赖性javax.persistence但我可以用这个活,主要是因为javax.persistence只包含注释,没有实现原来这是相当"逻辑"不是.一个"技术"依赖.我认为对spring-data-annotation模块的依赖会闻起来更少.)

domain-driven-design ddd-repositories spring-data

4
推荐指数
1
解决办法
483
查看次数