将依赖项作为Jar复制到本地repo中,并使用appassembler-maven-plugin将Jar包含为类路径

时间:2016-12-16 01:10:06

标签: java maven batch-file tomcat heroku

我正在使用最新版本的Maven,之前我试图将一个特定的依赖项(称为依赖项A)包含到一个多模块项目(使用Tomcat的Java Web App和另一个Java项目)中。 Windows通过在本地测试它,并使用我的POM中的Appasembler plugin appasemble command使用.bat脚本创建可运行的普通Java项目。但事实证明,依赖A包含了很多依赖项,并且生成的.bat脚本超出了它可以执行的长度限制,因为包含了大量的类路径。 所以我决定将它打包到一个jar中,并从一个地方引用一个jar中的所有库,并使用maven-dependency-plugincopy目标排除现有的类路径:

<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插件。然而,问题仍然存在,因为这仍然没有回答主要问题。

0 个答案:

没有答案