我们有一个项目A,它从另一个项目B下载一个工件,对它执行一个操作,并由此产生一个新的工件。我们使用来自Maven依赖插件的“依赖:复制”目标来从我们的Maven存储库获得这个Project工件。
当我们执行一个Maven发行版时,我希望maven发布插件的“release :Pre准备”目标检查所有依赖项,如果找到任何快照版本,就会失败。这适用于我们的<dependencies><dependency>...</dependency></dependencies>
标签下的正常依赖项,但不适用于由maven依赖插件复制的工件“依赖项”。
我如何(如果有的话)向maven发布插件的准备测试公开这些复制工件的版本,并确保我们从未构建包含项目B快照的项目A版本?
如果上下文有帮助,下面是我们的pom中maven依赖项插件设置的简化版本:
<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>
发布于 2014-09-16 16:21:09
给我自己的问题加上一个答案,我发现我们可以通过在项目A的pom中添加一个额外的<dependency>...</dependency>
元素(它指项目B),将版本号暴露给maven-release。如果我们尝试使用快照发布,这将正确地导致失败,但它也会将项目B暴露给项目A的类路径。我们可以通过包含一个“<scope>
”(这使B的类不包含在A的二进制文件中)来限制这一点,但这仍然使A的单元测试被B‘污染’。
我希望这里有人有一个更好的解决方案,它实际上不会将项目B添加到项目A的类路径中。
https://stackoverflow.com/questions/25880370
复制相似问题