Maven 2 如何使Maven模块不导出jar?
我有一个包含三个模块的Maven构建Maven 2 如何使Maven模块不导出jar?,maven-2,Maven 2,我有一个包含三个模块的Maven构建 模块A导出一个jar 模块B依赖于A并导出一个jar 模块C是一组依赖于a和B的回归测试 回归测试不仅仅是模块B的一部分的原因是,它们应该能够针对A和B的多个版本运行,以确保向后兼容性。我希望能够从顶层构建运行deploy,以创建A.jar和B.jar,而不是C.jar。这是可能的吗?对于模块C,请使用以下内容: <packaging>pom</packaging> pom maven部署插件包括一个防止工件部署的选项 <
- 模块A导出一个jar
- 模块B依赖于A并导出一个jar
- 模块C是一组依赖于a和B的回归测试
回归测试不仅仅是模块B的一部分的原因是,它们应该能够针对A和B的多个版本运行,以确保向后兼容性。我希望能够从顶层构建运行
deploy
,以创建A.jar和B.jar,而不是C.jar。这是可能的吗?对于模块C,请使用以下内容:
<packaging>pom</packaging>
pom
maven部署插件包括一个防止工件部署的选项
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
maven部署插件
真的
您可以尝试将其添加到project C中。使用C的类型为
pom
的打包,然后重新绑定所有必需的插件:
<project>
...
<packaging>pom</packaging>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>process-test-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>testResources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
...
聚甲醛
...
org.apache.maven.plugins
maven编译器插件
测试编译
测试编译
测试编译
org.apache.maven.plugins
maven资源插件
过程测试资源
过程测试资源
测试资源
org.apache.maven.plugins
maven surefire插件
测试
测试
测试
...
...
...
真的
如果您根本不需要创建JAR,那么您可能需要再添加两个属性:
<jar.skipIfEmpty>true</jar.skipIfEmpty>
<maven.install.skip>true</maven.install.skip>
true
真的
请注意,您仍然需要
maven.deploy.skip
,否则构建将在部署过程中失败。我尝试过了。然后我从顶层运行mvn测试,而C的测试不运行。您可能需要重新组织POM的继承权。例如,您可能需要在顶部使用超级pom,然后将C作为子模块,然后将a和B作为C下的子模块。如果您选择pom的打包类型,则需要根据下面Pascal的回答手动重新绑定所有常用插件。您仍然需要C的jar打包,只需要禁用该模块的部署。sal在这里有正确的答案。我冒昧地添加了如何抑制JAR的创建,以防不需要它。虽然这可能有效,但它相当冗长。Craig P.Motlin的回答提供了一个更好的解决方案。相关:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>