有:
父母:
<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>
Child pom:
maven-assembly-plugin
在此示例中,这些是具有2个(或更多)依赖项的父pom。 Child pom只有一个它需要的依赖。我可以从这个子pom模块构建一个jar并包含(范围:编译)它的单一依赖吗?它构建一个jar但不包含jar文件中的h2依赖。我试图在子pom中使用jar-with-dependencies
和 <a routerLink="/Supplier" routerLinkActive="active">Supplier</a>
<a routerLink="/Customer" routerLinkActive="active">Customer</a>
<router-outlet></router-outlet>
,但结果它创建了一个包含来自父pom的所有依赖项的jar。
答案 0 :(得分:1)
在父pom中列出依赖关系时,这是因为子项目需要它们。
您应该考虑从父pom中删除所有子项不需要的依赖项。
然而,最好的一种做法是使用dependencyManagement。您可以在父pom中指定将由子项目添加的任何log4j和h2库的版本。然后在您的子项目中,您只需导入不带版本的依赖项。
父母:
<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>
Child 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>
答案 1 :(得分:0)
离开我的头顶,您可以尝试maven-shade-plugin
(http://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html)
不确定它是否正是您所需要的,但它确实允许您指定包含/忽略的依赖项。