我们有一个项目A,它从另一个项目B下载工件,对其执行操作,并因此吐出新的工件。我们使用'依赖:copy'来自maven-dependency-plugin的目标是从我们的Maven存储库中获取这个Project B工件。
当我们执行Maven发布时,我希望maven-release-plugin&#39;发布:准备&#39;目标是检查所有依赖项,如果找到任何SNAPSHOT版本则失败。这适用于我们的<dependencies><dependency>...</dependency></dependencies>
标记下的正常依赖项,但不适用于工件&#34;依赖项&#34;由maven-dependency-plugin复制。
如何(如果有的话)我可以将这些复制的工件的版本暴露给maven-release-plugin的准备测试,并确保我们从未构建包含项目B快照的项目A的版本?
如果上下文有帮助,这里是我们pom中maven-dependency-plugin设置的简化版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${ProjectBGroupID}</groupId>
<artifactId>${ProjectB}</artifactId>
<version>${ProjectBVersion}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:0)
添加我自己的问题的答案,我发现我们可以通过在项目A的pom中加入一个额外的<dependency>...</dependency>
元素(引用项目B)来将版本号公开给maven-release-plugin。如果我们尝试使用快照进行发布,这会导致失败,但它也会将项目B暴露给项目A的类路径。我们可以通过包含一个<scope>
的“测试”来限制这一点(它将B的类保留在A的二进制文件中),但这仍然会使A的单元测试被B污染。
我希望有人在这里有一个更好的解决方案,它不会实际将项目B添加到项目A的类路径(的任何部分)。