我有一个包含两个模块的项目。该模块应该base
被pom
某种类型的项目用作父模块。该模块archetype
是一个原型,它创建一个使用base
项目作为父项目的项目。我想用maven-release-plugin
来发布这些项目。问题是archetype
有一个需要base
安装到本地存储库test
的集成测试(-目标作为集成测试的一部分在新创建的项目上运行)。当我准备发布时,maven-release-plugin
唯一会为每个模块运行test
-goal。这意味着集成测试将始终失败,因为base
找不到,因为它尚未安装。有什么解决方法吗?
问问题
170 次
3 回答
1
我遇到了类似的情况,原型生成的项目使用在同一反应器构建中构建的 Maven 插件。我使用invoker:install
将我的插件安装到仅用于原型的集成测试的本地存储库中(localRepositoryPath
对invoker:install
和使用相同的archetype:integration-test
);invoker:install
实际上安装了反应堆中所有已经构建的工件,所以我什至不需要指定任何东西。我没有遇到任何排序问题(我的插件是在我的原型之前构建的),但是我想我可以从原型中添加对插件的依赖项(in scope=test
)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<goals>
<goal>install</goal>
</goals>
</execution>
<configuration>
<localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
</configuration>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
<configuration>
<localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
</configuration>
</plugin>
于 2013-03-01T15:49:39.180 回答
0
好吧,您可以(并且可能应该)定义pom
聚合所有这些内部相关模块的多模块项目,因此它们可以在公共反应器中构建,即使它们没有安装到本地存储库,它们也可以相互看到。然后,你总是发布这个pom
项目(聚合器)和它的所有模块(包括base
和archetype
)。
于 2012-05-30T07:26:55.950 回答
0
解决方案是在原型install:file-install
的pre-integration-test
-phase 中运行,并将其配置为安装所需的父级。
于 2012-05-30T08:07:50.137 回答