以下引用提到了描述符引用jar-with-dependencies。 Afaik它是一个预定义的程序集,它将所有jar依赖项包含在一个大的自包含jar文件中。如果您有多个依赖项并且需要将项目复制到另一台计算机,这很好,因为您不需要单独更新/删除过时的库。 https://newfivefour.com/category_maven-assembly.html
我将maven-assembly-plugin添加到我的pom中,并创建了MyTool.jar-with-dependency.jar。我希望jar包含所有外部依赖项,但它与普通的MyTool.jar相同,并且不包含任何依赖项,如apache.commons或apache.logging。
重要的细节是依赖范围设置为provided
。没有它,它按预期工作。但是我稍后使用范围maven-dependency-plugin
将provided
范围内的所有依赖项复制到特定目录。
[...]
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
<scope>privided</scope>
</dependency>
</dependencies>
<build>
<!--pluginManagement-->
<plugins>
<plugin> <!-- This is the plugin I added. -->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
我使用Apache Maven 2.2.1(rdebian-14)。
如何包含provided
范围内的依赖项?或者还有其他解决方案吗?