Maven 无法在jar:jar之前运行解包依赖项,
当从命令行运行mvn clean install时,我无法让maven dependency plugin/unpack dependency在maven jar plugin/jar之前运行 每次,我看到它运行jar:jar,在解包的东西运行之前,我在谷歌上看到一些关于在maven生命周期中添加预包阶段的说法,这似乎不起作用 基本上,我想创建一个jar文件,其中包含所有必要的类,所有2600个。此jar获取一个清单,使其能够以以下方式运行:Maven 无法在jar:jar之前运行解包依赖项,,maven,dependencies,execution,Maven,Dependencies,Execution,当从命令行运行mvn clean install时,我无法让maven dependency plugin/unpack dependency在maven jar plugin/jar之前运行 每次,我看到它运行jar:jar,在解包的东西运行之前,我在谷歌上看到一些关于在maven生命周期中添加预包阶段的说法,这似乎不起作用 基本上,我想创建一个jar文件,其中包含所有必要的类,所有2600个。此jar获取一个清单,使其能够以以下方式运行: java -jar blah.jar 如果我能让
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>
您可以通过按顺序将目标标识为
"mvn clean dependency:unpack jar:jar install"
我希望这能帮助你达到要求
问候,
Charlee Ch.您可以通过按顺序将目标标识为
"mvn clean dependency:unpack jar:jar install"
我希望这能帮助你达到要求
问候,
Charlee Ch.我在创建单罐时也遇到了类似的问题。 我的解决方案将标准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>
我对单罐的创建也有类似的问题。 我的解决方案将标准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>
在原始问题中,将该阶段替换为以下阶段 准备包装 这将导致首先取出罐子。对于你的问题,阴影解决方案更好,但我仍然会在这里发布这篇文章,作为其他类似问题的参考,在阴影没有帮助的情况下 输出路径被设置为确保jar的内容最终位于jar:jar目标打包目标/类的目录中 完整插件执行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>
在原始问题中,将该阶段替换为以下阶段 准备包装 这将导致首先取出罐子。对于你的问题,阴影解决方案更好,但我仍然会在这里发布这篇文章,作为其他类似问题的参考,在阴影没有帮助的情况下 输出路径被设置为确保jar的内容最终位于jar:jar目标打包目标/类的目录中 完整插件执行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>
谢谢,我试图得到一个一次性的解决方案,我已经在上面发布了我的答案,编辑了我的问题,我不允许回答我自己的问题。我仍然有兴趣知道为什么执行的东西没有按正确的顺序运行。@Bryan Hunt,我以前在proguard插件中遇到过类似的问题。我通过使用preparepackage阶段配置来实现。您可能会在“准备包装”中看到更多信息,即在实际包装之前执行准备包装所需的任何操作。这通常会导致包的未打包、已处理版本。Maven 2.1及以上版本谢谢,我试图得到一个一次性解决方案,我已经在上面发布了我的答案,编辑了我的问题,我不允许回答我自己的问题。我仍然有兴趣知道为什么执行的东西没有按正确的顺序运行。@Bryan Hunt,我以前在proguard插件中也遇到过类似的问题。我通过使用preparepackage阶段配置来实现。您可能会在“准备包装”中看到更多信息,即在实际包装之前执行准备包装所需的任何操作。这通常会导致包的未打包、已处理版本。Maven 2.1及以上Hi Mariusz,我不久前解决了这个问题,但不允许回答我自己的问题。请阅读我帖子的第二部分。最近有一个非常可靠的解决方案。嗨,Mariusz,我不久前解决了这个问题,但不允许回答我自己的问题。请阅读我帖子的第二部分。最近有一个非常可靠的解决方案。谢谢所有的回复,但我已经回复了自己的帖子。后续答复只是混淆了问题。感谢您的关注。请随意添加您的解决方案作为以下答案。感谢所有回复,但我已经回复了自己的帖子。后续答复只是混淆了问题。感谢您的关注。请随意添加您的解决方案作为以下答案。