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

时间:2020-05-21 11:54:59

标签: java 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>

有什么办法可以将一组罐子(文件夹)添加到项目的包装中?或任何其他可以成功构建项目的解决方案?


can we create a single jar containing all my jars inside and then use the system scope of maven

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

2 个答案:

答案 0 :(得分:0)

坏消息:对于一个适当的Maven项目,您需要在POM中添加用作<dependency>的每个工件。

好消息:我非常怀疑这100个罐子都是 -直接在您的源代码中使用 -在MavenCentral之类的公共Maven存储库中不可用

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

答案 1 :(得分:0)

我的解决方案:Maven插件addjar让我们将所有jar添加到一个位置(在这种情况下为projectdirectory / lib)。

this enables you to add these jar's in the final package(jar in my case) when you maven build, but to run locally you have to add those jar files directly in the classpath.

            <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>

现在使用mvn clean install shade:shade

创建一个阴影罐
相关问题