如何使用外部jar库构建maven可执行jar?

时间:2017-08-23 08:22:36

标签: java maven jar pom.xml

我正在尝试基于Maven构建我的应用程序的jar文件。所以我不需要在我的构建中包含外部jar库。我需要我的应用程序在运行时从本地maven存储库或本地文件夹中提供此外部依赖项,这些将包含这些外部库。 我为这个依赖项配置了我的pom文件,如下所示:

<profiles>
        <profile>
            <id>compile</id>
            <dependencies>
                <dependency>
                    <groupId>groupId</groupId>
                    <artifactId>some.artifact</artifactId>
                    <version>1.0</version>
                </dependency>
            </dependencies>
        </profile>

并尝试使用此前缀-Pcompile运行此jar。我正在使用此answer

但是在运行时,当我尝试执行一个使用这个外部库的方法时,我已经从我的外部库中获得了java.lang.NoClassDefFoundError我的类的名称。

那么我如何制作一个将使用本地存储的外部jar库的构建?

1 个答案:

答案 0 :(得分:0)

所以我找到了在最终maven构建之外存储jar的解决方案。 我只需要使用正确的路径将此jar添加到classpath。为此,我将其添加到pom.xml:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
                        <mainClass>your.mainClass</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>project-0.0.1-SNAPSHOT.lib/some.lib-1.1.jar</Class-Path>
                        </manifestEntries>

                    </archive>
                </configuration>            
</plugin>