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

Java 如何使用外部jar库构建maven可执行jar?,java,maven,jar,pom.xml,Java,Maven,Jar,Pom.xml,我正在尝试基于Maven构建我的应用程序的jar文件。所以我不需要在构建中包含外部jar库。我需要我的应用程序在运行时从本地maven存储库或本地文件夹提供此外部依赖项,这些存储库将包含这些外部库。 我为此依赖项配置pom文件,如下所示: <profiles> <profile> <id>compile</id> <dependencies>

我正在尝试基于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>

编译
groupId

但是在运行时,当我试图执行一个方法时,使用这个外部库,我得到了
java.lang.NoClassDefFoundError
,其中包含我的外部库中的类名


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

因此我找到了在最终maven构建之外存储jar的解决方案。 我只需要用正确的路径将这个jar添加到类路径中。为此,我将其添加到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>

org.apache.maven.plugins
maven jar插件
3.0.2
真的
${project.build.finalName}.lib/
你的主课
project-0.0.1-SNAPSHOT.lib/some.lib-1.1.jar

就像这里:构建包含所有依赖项的自包含可执行jar文件更为常见。使部署更加容易和安全@Thilo:如果依赖项中有一个像Bouncycastle这样的库,这就不起作用了,因为它是一个签名加密提供程序,而带有依赖项的jar会杀死jar签名,这会导致BC失败。