【发布时间】:2021-12-13 04:11:06
【问题描述】:
我有一个带有 pom 的父 maven 项目和两个带有 jar 模式包装的 pom 的子项目。这两个子 pom 都有一个启动类。 问题是每次创建新的子项目时,都需要一个带有jar包装的新pom。 研究目标是创建一个jar打包模式的父pom,去掉MyChildLauncherCLass声明,规范每个子pom的版本。
孩子 1 个绒球
<?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>
我怎么能在上面的父 pom 上做到这一点
【问题讨论】:
-
我会尝试在你的父 POM 中使用
<pluginManagement>。 -
删除
<sourceDirectory>../../webapp/src/main/java</sourceDirectory>,因为你做错了...请在 GitHub 或类似网站上制作一个完整的工作示例... -
嗨 @GeroldBroser 在我的父包中我有
atori-batch pom ${project.artifactId} 。我想将包装 pom 更改为 jar 包装,并添加带有标签的 shade 插件,以便为每个孩子提供特定版本 -
嗨 @khmarbaise 在我的父包中我有
atori-batch pom ${project.artifactId} 。我想将包装 pom 更改为 jar 包装,并添加带有标签的 shade 插件,以便为每个孩子提供特定版本 -
仅使用 maven-shade-plugin 的配置创建一个单独的子级,并将所需的子级添加为依赖项。您不能将父包装从
pom更改为jar,因为这不适用于多模块构建...
标签: java maven jar pom.xml maven-shade-plugin