是否可以将相同工件的旧版本添加为依赖项? 这是一个例子:
<groupId>edu.illinois.cs.cogcomp</groupId>
<artifactId>illinois-pos</artifactId>
<version>2.0.3</version>
<dependencies>
<dependency>
<groupId>edu.illinois.cs.cogcomp</groupId>
<artifactId>illinois-pos</artifactId>
<version>2.0.2</version>
<classifier>model</classifier>
</dependency>
</dependencies>
如果没有,有什么办法让它起作用吗?
答案 0 :(得分:1)
根据您的意见(以及进一步的澄清和需求),我建议将Maven multi-module项目结构如下:
因此,您将拥有一个具有packaging
pom
的聚合器pom(空项目,无源,无测试)并定义两个模块(即代码模块,测试模块)。您将继续处理代码模块,然后在测试模块上提供测试用例,您还可以覆盖并重新定义任何所需的依赖项。
因此,作为同一构建的一部分(在聚合器项目上),您可以根据需要构建两个模块。
或者,保留单层模块,您可以定义profile,它将重新定义所需的依赖项(使用不同的版本)并运行您的测试用例。这也意味着:
<skip>${skip.tests}</skip>
)将Maven Surefire插件配置为skip tests,该属性具有默认值true
skip.tests
属性的值更改为false
并重新定义依赖关系使用第二种方法,您需要执行两次构建:第一次构建将正常运行但跳过测试(mvn clean install
),第二次构建将激活配置文件并从测试阶段开始({{ 1}})。
第一种方法(多模块项目)肯定更值得推荐。
答案 1 :(得分:0)
不,不是,因为maven会选择更高版本。那是因为在运行时,java不能同时使用这两个版本 - 如果你在类路径中同时使用这两个版本,那么加载的第一个版本将会&#34; win&#34;而另一个则不会被使用。