为了账号安全,请及时绑定邮箱和手机立即绑定

使用Maven在JAR中包括依赖项

使用Maven在JAR中包括依赖项

跃然一笑 2019-06-19 15:35:55
使用Maven在JAR中包括依赖项是否有办法强制maven(2.0.9)将所有依赖项包含在单个JAR文件中?我有一个构建成一个JAR文件的项目。我也希望将依赖项中的类复制到JAR中。最新情况:我知道我不能只是在JAR文件中包含一个JAR文件。我正在寻找一种方法来解压指定为依赖项的JAR,并将类文件打包到我的JAR中。
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您可以使用带有“jar-with-依赖关系”描述符的maven-程序集插件来完成此操作。下面是我们的柚子文件中的一个执行以下操作的相关块:

  <build>
    <plugins>
      <!-- any other plugins -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>


查看完整回答
反对 回复 2019-06-19
?
当年话下

TA贡献1890条经验 获得超9个赞

使用Maven 2,正确的方法是使用Maven 2组装插件它有一个预定义描述符文件为此,您只需在命令行上使用:

mvn assembly:assembly -DdescriptorId=jar-with-dependencies

如果要使这个JAR可执行,只需将要运行的主类添加到插件配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>my.package.to.my.MainClass</mainClass>
      </manifest>
    </archive>
  </configuration></plugin>

如果要将该程序集创建为正常生成过程的一部分,则应将单株目录单目标(目标)assembly目标只应从命令行运行到生命周期阶段(package),类似这样的事情:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>create-my-bundle</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        ...      </configuration>
    </execution>
  </executions></plugin>

调整configuration元素以满足您的需要(例如,使用所述的清单内容)。


查看完整回答
反对 回复 2019-06-19
?
慕仙森

TA贡献1827条经验 获得超7个赞

如果您想要执行一个可执行的JAR文件,它们也需要设置主类。所以完整的配置应该是。

    <plugins>
            <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <executions>
                     <execution>
                          <phase>package</phase>
                          <goals>
                              <goal>single</goal>
                          </goals>
                      </execution>
                  </executions>
                  <configuration>
                       <!-- ... -->
                       <archive>
                           <manifest>
                                 <mainClass>fully.qualified.MainClass</mainClass>
                           </manifest>
                       </archive>
                       <descriptorRefs>
                           <descriptorRef>jar-with-dependencies</descriptorRef>
                      </descriptorRefs>
                 </configuration>
         </plugin>
   </plugins>


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 694 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信