如何在eclipse中剪切maven run配置或编辑父pom.xml,该pom.xml应该执行只包含jar的特定内容的子模块包的创建。
My Project Strucutre:包含六个子模块(jar类型)的父MavenProject(pom类型)
目前我已将maven个人资料概念添加到子模块,如下所示: 我不希望在子模块中添加相同的东西,而是我想在父pom.xml中添加一些东西,它使用特定内容来保护所有子模块
<profiles>
<profile>
<id>client</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<includes>
<include>com/xxx/yyy/zzz/*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
目录布局:
My Project Structure
-- ParentProject
|-- pom.xml
|-- childmodule 1
| |-- src/main/java
| | |-com.pages.abc ->package1
| | |-com.pages.def ->package2
| | |-com.tests.abc ->package3
| | |-com.tests-def ->package4
| |-- src/main/resources
| | |-resourde folder
| |-- target folder
| |-- pom.xml
| |
|
|--child modules 2 to 6 (similar structure as childmodule 1)
我的实际需要是我需要跳过子模块1到5的所有测试包,除了子模块6.我需要创建模块jar,不包括1to5模块的测试包。所以在父pom.xml中添加了配置文件“client”,我能够获得自定义jar,但我也得到了包含所有包的默认jar。罐子存在于目标文件夹中。
答案 0 :(得分:2)
尝试将以下代码添加到父pom中,并从应该应用它的所有模块中扩展该父代。建议的技巧将检查是否存在源模式(或者,不存在)。
<profiles>
<profile>
<id>client</id>
<file>
<exists>${basedir}/src/main/java/com/xxx/yyy/zzz/*</exists>
<!-- Or, alternatively, -->
<missing>${basedir}/src/main/resources/foo.properties</missing>
-->
</file>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<includes>
<include>**/com/xxx/yyy/zzz/**</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
答案 1 :(得分:1)
你有默认的jar和带分类器的jar,因为你已将execution
的特定配置添加到package
阶段,但maven-jar-plugin
已在execution
上设置了默认package
阶段。
如果在mvn package
命令后只需要一个jar,则应调整maven-jar-plugin
的默认配置
<profiles>
<profile>
<id>client</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<classifier>client</classifier>
<includes>
<include>com/xxx/yyy/zzz/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
或者,作为替代方案,您可以将id
标记添加到具有default-jar
值的执行中,以仅允许执行maven-jar-plugin
<profiles>
<profile>
<id>client</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<includes>
<include>com/xxx/yyy/zzz/*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>