我正在使用最新版本的Maven,之前我试图将一个特定的依赖项(称为依赖项A
)包含到一个多模块项目(使用Tomcat的Java Web App和另一个Java项目)中。 Windows通过在本地测试它,并使用我的POM中的Appasembler plugin appasemble
command使用.bat
脚本创建可运行的普通Java项目。但事实证明,依赖A
包含了很多依赖项,并且生成的.bat
脚本超出了它可以执行的长度限制,因为包含了大量的类路径。
所以我决定将它打包到一个jar中,并从一个地方引用一个jar中的所有库,并使用maven-dependency-plugin
和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>
它成功创建了包含所有依赖项的jar。现在我正在尝试将jar包含在我的.bat
脚本中生成的类路径中,但是当我查看appassembler:assemble
文档时,没有这样的命令可以排除已经存在的新类路径jar并将新打包的jar包含到.bat
脚本中。
那么有什么方法可以将新打包的jar包含为类路径,并从可启动的.bat
脚本中排除已包含在新的pacakaged jar中的类路径?
编辑:作为临时修复,我设法通过使用通配符修复了长类路径问题,并通过包含以下内容来展平目录布局:
<repositoryLayout>flat</repositoryLayout>
<useWildcardClassPath>true</useWildcardClassPath>
到appassembler
插件。然而,问题仍然存在,因为这仍然没有回答主要问题。