Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
Java Maven:如何在Maven项目中打包外部JAR(文件夹)_Java_Maven - Fatal编程技术网

Java Maven:如何在Maven项目中打包外部JAR(文件夹)

Java Maven:如何在Maven项目中打包外部JAR(文件夹),java,maven,Java,Maven,我有一组外部jar(数百个),我已经将它们添加到我的项目的构建路径中,以使其工作。 但是在打包的时候,它失败了,因为maven无法使用这些jar 我看过很多文章,所有的解决方案(比如在系统路径中添加jar)都只针对一个jar <dependency> <groupId>com.sample</groupId> <artifactId>sample</artifactId> <version>1.0</version&g

我有一组外部jar(数百个),我已经将它们添加到我的项目的构建路径中,以使其工作。 但是在打包的时候,它失败了,因为maven无法使用这些jar

我看过很多文章,所有的解决方案(比如在系统路径中添加jar)都只针对一个jar

<dependency>
<groupId>com.sample</groupId>
<artifactId>sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>

com.sample
样品
1
系统
${project.basedir}/src/main/resources/Name\u Your\u JAR.JAR
我们有没有办法将jar组(文件夹)添加到项目的打包中?或者我的项目可以成功构建的任何其他解决方案


我们可以创建一个包含所有我的jar的jar,然后使用maven的系统范围吗

我试着通过
jar-cvf my_jar.jar*
创建jar,并将这个jar放在系统范围内。但这对我不起作用


坏消息是:对于一个合适的Maven项目,您需要在POM中添加每一个作为
使用的工件

好消息是:我非常怀疑这100个罐子是否都是 -直接用于源代码中 -在公共Maven存储库(如MavenCentral)中不可用


所以更好的策略是找出你真正需要的,并在MavenCentral中找到。然后Maven为您找到所有可传递的依赖项。因此,如果您真的需要10个JAR,而所有其他JAR都只是依赖项的依赖项,只需添加这10个JAR(来自Mavenentral),您就完成了。

坏消息:对于一个合适的Maven项目,您需要添加POM中用作
的每个工件

好消息是:我非常怀疑这100个罐子是否都是 -直接用于源代码中 -在公共Maven存储库(如MavenCentral)中不可用


所以更好的策略是找出你真正需要的,并在MavenCentral中找到。然后Maven为您找到所有可传递的依赖项。因此,如果您真的需要10个jar,而所有其他jar都只是依赖项的依赖项,只需添加这10个jar(来自MavenCentral),您就完成了。

我的解决方案:Maven pluggin addjar让我们将所有jar添加到一个位置(本例中为projectdirectory/lib)

这使您能够在maven构建时将这些jar添加到最终的包中(在我的例子中是jar),但要在本地运行,您必须将这些jar文件直接添加到类路径中。

            <plugin>
                      <groupId>com.googlecode.addjars-maven-plugin</groupId>
                      <artifactId>addjars-maven-plugin</artifactId>
                      <version>1.0.5</version>
                      <executions>
                             <execution>
                                   <goals>
                                          <goal>add-jars</goal>
                                   </goals>
                                   <configuration>
                                          <resources>
                                                <resource>
                                                       <directory>${basedir}/lib</directory>
                                                </resource>
                                          </resources>
                                   </configuration>
                             </execution>
                      </executions>
            </plugin>

com.googlecode.addjars-maven-plugin
addjars maven插件
1.0.5
加罐
${basedir}/lib

现在使用mvn clean install shade:shade创建一个shade jar:shade

我的解决方案:Maven pluggin addjar让我们将所有jar添加到一个地方(本例中为projectdirectory/lib)

这使您能够在maven构建时将这些jar添加到最终的包中(在我的例子中是jar),但要在本地运行,您必须将这些jar文件直接添加到类路径中。

            <plugin>
                      <groupId>com.googlecode.addjars-maven-plugin</groupId>
                      <artifactId>addjars-maven-plugin</artifactId>
                      <version>1.0.5</version>
                      <executions>
                             <execution>
                                   <goals>
                                          <goal>add-jars</goal>
                                   </goals>
                                   <configuration>
                                          <resources>
                                                <resource>
                                                       <directory>${basedir}/lib</directory>
                                                </resource>
                                          </resources>
                                   </configuration>
                             </execution>
                      </executions>
            </plugin>

com.googlecode.addjars-maven-plugin
addjars maven插件
1.0.5
加罐
${basedir}/lib

现在使用
mvn clean install shade:shade

创建一个shade jar,您不想在引用jar之前在本地maven repo中安装它们吗?虽然如果你有数百个罐子,那会很痛苦…@Maaatt,是的,这是个问题,它们实际上超过了100个。所有这些罐子都来自其他项目的Maven版本吗?或者这些外部依赖项不是您自己构建的?@khmarbaise,这些是客户端提供的sdk的其他依赖项。您不想在引用之前在本地maven repo中安装JAR吗?虽然如果你有数百个罐子,那会很痛苦…@Maaatt,是的,这是个问题,它们实际上超过了100个。所有这些罐子都来自其他项目的Maven版本吗?或者这些外部依赖项不是您自己构建的?@khmarbaise,这些是客户端提供的sdk的其他依赖项。实际上我使用的是外部sdk,这些jar在公共maven存储库中不可用,jar的数量甚至更多,它是800+。而且您没有POM,不知道哪个依赖于哪个?然后我将编写一个脚本,将目录中的所有jar安装到本地存储库中,并生成一个包含800多个依赖项的XML片段,您可以将其复制/粘贴到项目中。实际上,我使用的是外部sdk,这些jar在公共maven存储库和jar计数中不可用更重要的是,它是800+。您没有POM,也不知道哪个依赖于哪个?然后,我将编写一个脚本,将目录中的所有JAR安装到本地存储库中,并生成一个包含800+个依赖项的XML片段,您可以复制/通过这些依赖项