1

我有一个包含两个模块的项目。该模块应该basepom某种类型的项目用作父模块。该模块archetype是一个原型,它创建一个使用base项目作为父项目的项目。我想用maven-release-plugin来发布这些项目。问题是archetype有一个需要base安装到本地存储库test的集成测试(-目标作为集成测试的一部分在新创建的项目上运行)。当我准备发布时,maven-release-plugin唯一会为每个模块运行test-goal。这意味着集成测试将始终失败,因为base找不到,因为它尚未安装。有什么解决方法吗?

4

3 回答 3

1

我遇到了类似的情况,原型生成的项目使用在同一反应器构建中构建的 Maven 插件。我使用invoker:install将我的插件安装到仅用于原型的集成测试的本地存储库中(localRepositoryPathinvoker: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项目(聚合器)和它的所有模块(包括basearchetype)。

于 2012-05-30T07:26:55.950 回答
0

解决方案是在原型install:file-installpre-integration-test-phase 中运行,并将其配置为安装所需的父级。

于 2012-05-30T08:07:50.137 回答