如何将外部jar添加到Maven Web应用程序项目

cngwdvgl  于 2022-11-02  发布在  Maven
关注(0)|答案(8)|浏览(193)

我有一个Spring roo项目(基本上是一个maven项目)。我想把dropbox sdk添加到项目中,问题是它不在maven中。我添加了以下文件

<dependency>
        <groupId>com.dropbox</groupId>
        <artifactId>dropbox-sdk</artifactId>
        <version>1.3.1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/dropbox-java-sdk-1.3.1.jar</systemPath>
    </dependency>

它解决了编译错误,但是当我在Spring工具套件中运行项目时,jar文件没有被添加到war lib文件夹中。我如何让maven将我的外部jar文件添加到我的war lib文件夹中?
我不想在maven中安装jar,因为我必须在使用该项目的所有计算机中安装它

c7rzv4ha

c7rzv4ha1#

我终于找到了一个简洁的解决方案,它更容易实现,你可以在java项目中添加一个项目内存储库,然后在pom中链接到它。
在Maven中添加一个项目内资源库,如下所示:

<repository>
    <id>in-project</id>
        <name>In Project Repo</name>
        <url>file://${project.basedir}/libs</url>
</repository>

然后,在项目的根文件夹中创建一个文件夹结构,如下所示

/groupId/artifactId/version/artifactId-version.jar

并添加依赖项。
这种方法所需的代码和工作量最少,而且如果该库被添加到Maven存储库中,您可以随时删除项目中的存储库。

m0rkklqb

m0rkklqb2#

有一个更简单的解决方案,就是在插件中设置webResource。通过这个解决方案,你可以将本地磁盘中的任何文件添加到war中!示例如下,

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <warName>api</warName>
                <webResources>
                    <resource>
                        <directory>libs/</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                        <includes>
                            <include>**/*.jar</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
ldfqzlk8

ldfqzlk83#

解决这个问题的最好方法是将这些本地jar文件添加到WEB-INF/lib文件夹中。然后,您会发现所有这些jar文件都打包在最终的war文件中。

bxpogfeg

bxpogfeg4#

我不建议使用这种方法,但是您可以添加一些POM配置,以便在单独的配置文件中安装第三方依赖项:

<profiles>
    <profile>
        <id>install-dependencies</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3.1</version>
                    <executions>
                        <execution>
                            <id>install-dropbox-sdk</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>install-file</goal>
                            </goals>
                            <configuration>
                                <groupId>com.dropbox</groupId>
                                <artifactId>dropbox-sdk</artifactId>
                                <version>1.3.1</version>
                                <file>src/main/lib/dropbox-java-sdk-1.3.1.jar</file>
                                <packaging>jar</packaging>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>
        <id>build</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <dependencies>
            <dependency>
                <groupId>com.dropbox</groupId>
                <artifactId>dropbox-sdk</artifactId>
                <version>1.3.1</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

这里有两个配置文件:install-dependenciesbuild。第一个命令将dropbox-sdk依赖项安装到Maven资源库中,并且需要在每台计算机上运行一次,如下所示:

mvn -Pinstall-dependencies validate

默认情况下,第二个选项处于启用状态,并将Dropbox SDK添加为依赖项。
老实说,这并不比逃跑好多少

mvn install:install-file -Dfile=src/main/lib/dropbox-java-sdk-1.3.1.jar -DgroupId=com.dropbox -DartifactId=dropbox-sdk -Dversion=1.3.1 -Dpackaging=jar

在每台计算机上。
这种方法的另一个缺点是,您还必须将dropbox-sdk的所有依赖项添加到您的构建中--而如果通过将JAR和POM添加到仓库服务器来正确地完成此操作,则Maven将正确地计算可传递依赖项。

2uluyalo

2uluyalo5#

我建议在Maven存储库服务器(如Nexus或Artifactory)中创建一个“第三方”存储库,并将jar上传到那里。尽管这意味着将jar放入Maven中,但至少有了存储库服务器,任何构建应用程序的人都可以使用它。

yftpprvb

yftpprvb6#

1.将库路径更改为:源代码/主文件/Web应用程序/Web-INF/库
1.在pom.xml中:
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/xxxx.jar</systemPath>

gzjq41n4

gzjq41n47#

这个站点中描述的步骤非常简单,而且效果很好:https://mythinkpond.com/2010/10/02/adding-custom-jars-under-web-inflib-in-a-maven-project/
1.在项目下创建一个“lib”文件夹,如下所示:“\src\main\Web应用程序\Web-INF\资源库”
1.复制需要的“jar”等,您希望包括在您的WAR包文件夹。
1.像平常一样调用你的maven构建。我使用“mvn install”,它创建构建war文件。

62lalag4

62lalag48#

我知道我真的迟到了,但我想知道为什么你不把jar放在.m2文件的本地repo中,并从那里添加一个对pom的引用?

相关问题