使用maven shade插件的父节点和子节点



我有一个父maven项目和它的pom,还有两个子项目,它们的pom以jar模式打包。这两支童歌有一班发射。问题是每次我创建一个新的子项目时,我都需要一个带有罐子包装的新pom。研究的目标是在jar封装模式下创建一个父包,删除MyChildLauncherCLass声明,并标准化每个子包的版本。

child 1 pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>myChildGroupId</groupId>
<artifactId>myChildartifactId</artifactId>
<version>myChildVersion</version>
</parent>
<artifactId>myChildArtifactId</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<build>
<sourceDirectory>../../webapp/src/main/java</sourceDirectory>
<resources>
<resource>
<directory>../../webapp/src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>MyChildLauncherCLass</Main-Class>
<Child1Version>${project.version}</Child1Version>
</manifestEntries>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> 

父pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>myParentgroupId</groupId>
<artifactId>myParentArtifactId1</artifactId>
<version>myParentVersion</version>
</parent>
<artifactId>myParentArtifactId2</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<dependencies>
... dependencies...
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Child1Version>${project.version}</Child1Version> <!-- How to do this generic for any child pom ???? -->
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>

我怎么能在我的父母上面做呢

项目结构:

+- parent
+ pom.xml ... <packaging>pom, <module>child1/<module>child1/<module>childN
|
+- child1
|  +- pom.xml ... <parent>parent
|  +- ... src/main, src/test, etc.
|
+- child2
|  +- pom.xml ... <parent>parent
|  +- ... src/main, src/test, etc. 
|
+- childN
+- pom.xml ... <parent>parent
+- ... src/main, src/test, etc.
父POM

...
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>...</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<ChildVersion>${project.version}</childVersion>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
...

子酸盐

...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>Child[N]LauncherCLass</Main-Class>
</manifestEntries>
</transformer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...

最新更新