Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 无法在jar:jar之前运行解包依赖项,_Maven_Dependencies_Execution - Fatal编程技术网

Maven 无法在jar: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 如果我能让

当从命令行运行mvn clean install时,我无法让maven dependency plugin/unpack dependency在maven jar plugin/jar之前运行

每次,我看到它运行jar:jar,在解包的东西运行之前,我在谷歌上看到一些关于在maven生命周期中添加预包阶段的说法,这似乎不起作用

基本上,我想创建一个jar文件,其中包含所有必要的类,所有2600个。此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,我不久前解决了这个问题,但不允许回答我自己的问题。请阅读我帖子的第二部分。最近有一个非常可靠的解决方案。谢谢所有的回复,但我已经回复了自己的帖子。后续答复只是混淆了问题。感谢您的关注。请随意添加您的解决方案作为以下答案。感谢所有回复,但我已经回复了自己的帖子。后续答复只是混淆了问题。感谢您的关注。请随意添加您的解决方案作为以下答案。