gpt4 book ai didi

java - 来自具有自己依赖项的子 pom 的 Jar

转载 作者:行者123 更新时间:2023-12-01 09:03:27 25 4
gpt4 key购买 nike

有:

父pom:

<groupId>practice</groupId>
<artifactId>app</artifactId>
<packaging>pom</packaging>
<version>1.0</version>

<modules>
<module>h2db</module>
</modules>

<build>
<pluginManagement>
...
</pluginManagement>
</build>

<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.185</version>
</dependency>
</dependencies>

子pom:

<parent>
<artifactId>app</artifactId>
<groupId>practice</groupId>
<version>1.0</version>
</parent>

<artifactId>h2db</artifactId>
<build>
<finalName>h2db</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>h2_server.H2ConsoleServer</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.185</version>
</dependency>
</dependencies>

在此示例中,这是一个具有 2 个(或更多)依赖项的父 pom。子 pom 只有一个它需要的依赖项。我是否可以从这个子pom模块构建一个jar并将其包含(范围:编译)它的单一依赖项?它构建一个 jar,但不在 jar 文件中包含 h2 依赖项。我尝试在子 pom 中使用 maven-assemble-pluginjar-with-dependencies 但结果它生成了一个包含来自父 pom 的所有依赖项的 jar .

最佳答案

在父 pom 中列出依赖项时,这是因为子项目需要它们。

您应该考虑从父 pom 中删除所有子项不需要的依赖项。

然而,一个最佳实践是使用 dependencyManagement。您可以在父 pom 中指定子项目将添加的任何 log4j 和 h2 库的版本。然后在您的子项目中,您只需导入没有版本的依赖项。

父pom:

<groupId>practice</groupId>
<artifactId>app</artifactId>
<packaging>pom</packaging>
<version>1.0</version>

<modules>
<module>h2db</module>
</modules>

<build>
<pluginManagement>
...
</pluginManagement>
</build>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.185</version>
</dependency>
</dependencies>
</dependencyManagement>

子pom:

<parent>
<artifactId>app</artifactId>
<groupId>practice</groupId>
<version>1.0</version>
</parent>

<artifactId>h2db</artifactId>
<build>
<finalName>h2db</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>h2_server.H2ConsoleServer</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>

关于java - 来自具有自己依赖项的子 pom 的 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com