从命令行运行mvn clean install时,我无法在maven-jar-plugin / jar之前运行maven-dependency-plugin / unpack-dependencies。
每一次,我都看到它在打开包装之前运行jar:jar,我在google搜索中看到一些关于在maven生命周期中添加预包装阶段的说法,似乎没有工作思路。
基本上我想创建一个包含所有必要类的jar文件(全部2600个)。这个jar有一个Manifest,可以让它以下列的方式运行:
java -jar blah.jar
如果我让它上班......
这是xml片段......
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>archivedb.Read</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
答案 0 :(得分:7)
在您的原始问题中,请将阶段替换为以下阶段。
<phase>prepare-package</phase>
这将导致首先提取罐子。对于你的问题,阴影解决方案是更好的,但我仍然会在这里发布此作为其他类似问题的参考,其中阴影没有帮助。
设置输出路径以确保jar的内容最终以jar:jar目标包(目标/类)的dir结束。
完整插件执行xml片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includes>**/*.class</includes>
<excludes>**/*.properties</excludes>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:1)
我有一个类似jar创建的类似问题。 我的解决方案将标准的maven依赖插件与解包目标结合在一起(在编译过程中解压缩所有依赖项并将其移动到自定义 outputDirectory 中)。 秘诀是,JAR插件从 target / classes 目录中获取所有内容并将其打包为一个JAR。
这就是我定义自定义 outputDirectory 的原因。看看下面的代码:
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<mainClass>pl.company.client.Uploader</mainClass>
</manifest>
</archive>
</configuration>
<version>2.3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
<version>2.3.2</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>compile</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
答案 2 :(得分:0)
您可以通过按顺序识别目标
来运行它"mvn clean dependency:unpack jar:jar install"
我希望这可以帮助您达到要求
此致
Charlee Ch。