相关疑难解决方法(0)

强制执行两个Maven配置文件中的一个

我有一个Maven项目,它定义了两个独立的配置文件,developer并且release(当然你得到了漂移,这里).我想要随时激活这两个配置文件中的一个,但绝不会同时激活.如果两者都以某种方式被激活,那么这个构建没有意义,应该失败.如果两者都没有被激活,那么这个构建也没有意义,应该失败.

我确信我可以编写一些自定义插件代码来实现这一点,我可能最终会这样做,但我有兴趣使用POM配置(可以使用Maven Central的现有插件)来实现这一点.

应该可以使用-P(--activate-profiles)激活插件,因此<activation>通过属性不是有效的解决方案.使用的解决方案activeByDefault也无效,因为activeByDefault通常称为陷阱,不可靠(我们实际上可能激活其他配置文件,因此activateByDefault无法使用).

您的建议非常感谢.

maven maven-profiles

10
推荐指数
3
解决办法
3453
查看次数

如何针对多个版本的依赖项运行单元测试

我正在写foo一个依赖于它的java库bar:1.1+.但是bar随着时间的推移,库已经发生了很大变化,我想确保我的库与每个版本的bar(1.1... 1.10)兼容.

因此,我希望(在CI期间)使用类路径运行每个单元测试,包括bar:1.X每个版本的可用版本bar.

我正在使用gradle和junit/spock,但我愿意接受各种变化的解决方案.

我可以通过gradle测试任务复制,但这非常麻烦,测试结果可能很难聚合.理想情况下,我会在我的测试旁边定义它应该运行哪些版本的条,例如:

@RunWith("com.acme:bar:1.1..1.10")
public class MyTest { ... }
Run Code Online (Sandbox Code Playgroud)

但我发现没有工具/跑步者.

java junit unit-testing gradle spock

7
推荐指数
1
解决办法
88
查看次数

主AST扫描期间SonarQube"未找到类"

我的设置:

  • Sonarqube 5.1.1
  • Sonar-Maven插件2.6(也试过2.7和3.6)
  • JDK 1.7.0_51

错误示例:

16:00:54 [INFO] [23:00:54.219] Sensor JavaSquidSensor
16:00:55 [INFO] [23:00:55.030] Java Main Files AST scan...
16:00:55 [INFO] [23:00:55.030] 1532 source files to be analyzed
16:00:58 [ERROR] [23:00:57.927] Class not found: javax.annotation.Nullable
16:00:58 [ERROR] [23:00:57.928] Class not found: javax.annotation.CheckReturnValue
16:00:58 [ERROR] [23:00:58.114] Class not found: javax.annotation.Nullable
Run Code Online (Sandbox Code Playgroud)

根据这个stackoverflow问题,javax.annotation应该是java 1.7及更高版本的一部分.此外,我已经尝试将它放在本地maven存储库中,但这没有帮助.

那么Sonar试图找到这个包裹在哪里?有什么帮助?!?

更新:

  • 我已经尝试修改sonar-maven-plugin以包含对javax.annotation的依赖
  • 我已经尝试将依赖项放在maven的settings.xml中
  • 将我的JDK升级到1.8并没有帮助.

java maven sonarqube

5
推荐指数
2
解决办法
1万
查看次数

如果同时包含两个依赖项,则强制maven失败

我有一个具有以下结构的项目:

parent
 > core
 > module-1 (with dependencies: A, B)
 > module-2 (with dependencies: X, Y)
 > project  
Run Code Online (Sandbox Code Playgroud)

module-1module-2在不同环境中提供相同的功能(数据访问).模块project取决于core,或者是module-1module-2.

问题:如果我让project同时依赖于module-1module-2,有很多不必要的传递依赖的(如部署到环境#1的时候我不需要X或Y,因为只有module-1在那里使用).

我想尽早如果两个构建失败module-1module-2被指定为的依赖性project.

我写了一个查找每个模块的测试,如果找到这两个模块就会失败,但我认为应该有一个更简单/更直接的方法来做到这一点.

java maven

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

标签 统计

java ×3

maven ×3

gradle ×1

junit ×1

maven-profiles ×1

sonarqube ×1

spock ×1

unit-testing ×1