Java 使用appassembler maven插件将依赖项作为Jar复制到本地repo中,并将Jar作为类路径包含在内
我使用的是最新版本的Maven,早些时候,我试图通过本地测试将一个特定的依赖项(称之为依赖项Java 使用appassembler maven插件将依赖项作为Jar复制到本地repo中,并将Jar作为类路径包含在内,java,maven,batch-file,tomcat,heroku,Java,Maven,Batch File,Tomcat,Heroku,我使用的是最新版本的Maven,早些时候,我试图通过本地测试将一个特定的依赖项(称之为依赖项a)包含到Windows中的多模块项目(使用Tomcat的Java Web App和另一个Java项目)中,并使用MyPOM中的创建可运行的普通Java项目,使用.bat脚本。但事实证明,dependencyA包含了大量的依赖项,并且生成的.bat脚本由于包含了大量的类路径而超出了它可以执行的长度限制。 因此,我决定将其打包到一个jar中,从一个地方引用单个jar中的所有库,并通过使用maven依赖插件和
a
)包含到Windows中的多模块项目(使用Tomcat的Java Web App和另一个Java项目)中,并使用MyPOM中的创建可运行的普通Java项目,使用.bat
脚本。但事实证明,dependencyA
包含了大量的依赖项,并且生成的.bat
脚本由于包含了大量的类路径而超出了它可以执行的长度限制。
因此,我决定将其打包到一个jar中,从一个地方引用单个jar中的所有库,并通过使用maven依赖插件
和copy
目标排除现有的类路径:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<!--Below this is the dependency `A` -->
<artifactItems>
<artifactItem>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-nlp</artifactId>
<version>${dl4j.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/localrepo</outputDirectory>
<destFileName>deeplearninglib</destFileName>
</artifactItem>
</artifactItems>
<localRepositoryDirectory>${project.basedir}\localrepo</localRepositoryDirectory>
</configuration>
</execution>
</executions>
</plugin>
到
appassembler
插件。然而,问题仍然悬而未决,因为这还没有回答主要问题。如果您已经使用了自Java 6以来可用的选项useWildcardClassPath
,我真的无法理解您的问题是什么?@khmarbaise以前我试图在bat
脚本中缩短类路径长度,但我没有知道useWildcardClassPath
命令的存在,所以我试图创建一个包含所有第三方依赖项(包括上文解释的依赖项a
)的jar,并将特定jar作为类路径添加到bat
脚本中,而不是将依赖项的每个单独类路径添加到bat
脚本中。然而,我仍然有兴趣知道如何完全实现我的原始方法(不使用usewardclasspath
),以及是否可能。如果您已经使用自Java 6以来可用的选项useWildcardClassPath
,我真的无法理解您的问题是什么?@khmarbaise以前我在bat
脚本中试图缩短类路径长度,但我不知道useWildcardClassPath
命令,所以我试图创建一个包含所有第三方依赖项(包括上面解释的依赖项a
)的jar,并将该jar作为类路径添加到bat
脚本中,而不是将依赖项的每个单独类路径添加到bat
脚本中。然而,我仍然有兴趣知道如何完全实现我最初的方法(不使用useWildcardClassPath
),以及是否可能。
<repositoryLayout>flat</repositoryLayout>
<useWildcardClassPath>true</useWildcardClassPath>