如何将外部jar添加到maven webapp项目

Cha*_* Wu 8 maven

我有一个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>
Run Code Online (Sandbox Code Playgroud)

它解决了编译错误,但是当我运行项目时,在Spring Tool Suite中,jar文件没有添加到war lib文件夹中.如何让maven将我的外部jar文件添加到war lib文件夹中?

我不想在maven中安装jar,因为我必须在使用该项目的所有机器中安装它

Cha*_* Wu 14

我终于找到了一个简洁的解决方案,实现起来要容易得多.您在java项目中添加了一个项目内存储库,并在pom中链接到它.

您可以在maven中添加项目内存储库,如下所示:

<repository>
    <id>in-project</id>
        <name>In Project Repo</name>
        <url>file://${project.basedir}/libs</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

然后在项目的根文件夹中创建一个类似于此的文件夹结构

/groupId/artifactId/version/artifactId-version.jar
Run Code Online (Sandbox Code Playgroud)

并像往常一样添加依赖项.

这种方法所需的代码和工作量最少,如果该库可以添加到maven存储库中,则可以随时删除项目内存储库.

http://bit.ly/OGVHSN


Sto*_*ony 6

有一个更简单的解决方案,即在插件中设置 webResource。通过解决方案,您可以将本地磁盘的任何文件添加到战争中!一个样本如下,

        <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>
Run Code Online (Sandbox Code Playgroud)


小智 6

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


Kkk*_*kev 2

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