我正在尝试创建一个Maven项目jar文件。我知道Maven存储库和pom.xml
文件配置。但我的查询与此有点不同。
我创建了一个Maven存储库。我已经通过下载它们来包含各自的依赖jar文件,然后在项目的构建路径中给出(因为我正在使用Eclipse Neon)。
现在当我run as --> Maven install
时,它会创建一个jar文件。但是那个jar是唯一的项目而不是我所包含的依赖项。
我已经检查并得到了我需要将它们包含在Maven pom.xml中的建议,但我不确切知道在我的程序中使用了哪个jar。
所以我想知道如何在不受干扰的情况下自动让Maven项目检测到依赖关系并将它们写入pom.xml
文件。
请告诉我这是怎么回事?
答案 0 :(得分:1)
我使用maven-dependency-plugin
解决了这个问题。
此插件会将jar文件所需的所有依赖项复制到目录${project.build.directory}/lib
中。
当您需要启动jar文件时,您必须指定类路径-cp /path/to/your-jar-file.jar:/path/to/your/lib/*
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 1 :(得分:0)
另一个解决方案可以直接使用Maven来启动你的应用程序,这样maven就可以透明地添加所有配置的依赖项。
您必须在此之前注意执行Maven package
目标。
# create your jar file with maven
mvn clean package
# execute your class where is main
mvn exec:java -Dexec.mainClass="your.package.App" -Dexec.args="your app params"
您甚至可以将此行包装到shell脚本run.sh
:
#!/bin/bash
PARAMS="$*"
if [ "A$PARAMS" == "A" ]
then
PARAMS="--help"
fi
mvn exec:java -Dexec.mainClass="your.package.App" -Dexec.args="$PARAMS"