如何创建具有buildpath使用的依赖项的Maven项目jar?

时间:2017-02-22 15:59:01

标签: java eclipse maven jar

我正在尝试创建一个Maven项目jar文件。我知道Maven存储库和pom.xml文件配置。但我的查询与此有点不同。

我创建了一个Maven存储库。我已经通过下载它们来包含各自的依赖jar文件,然后在项目的构建路径中给出(因为我正在使用Eclipse Neon)。

现在当我run as --> Maven install时,它会创建一个jar文件。但是那个jar是唯一的项目而不是我所包含的依赖项。

我已经检查并得到了我需要将它们包含在Maven pom.xml中的建议,但我不确切知道在我的程序中使用了哪个jar。

所以我想知道如何在不受干扰的情况下自动让Maven项目检测到依赖关系并将它们写入pom.xml文件。

请告诉我这是怎么回事?

2 个答案:

答案 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"