我有一个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 Tool Suite中,jar文件没有添加到war lib文件夹中。如何让maven将我的外部jar文件添加到war lib文件夹中?
我不想在maven中安装jar,因为我必须在使用该项目的所有机器中安装它
答案 0 :(得分:13)
我终于找到了一个简洁的解决方案,实现起来要容易得多。您在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存储库中,则可以随时删除项目内存储库。
答案 1 :(得分:3)
我不推荐这种方法,但您可以添加一些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-dependencies
和build
。第一个将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将正确计算传递依赖性。
答案 2 :(得分:3)
解决此问题的最佳方法是将这些本地jar文件添加到WEB-INF / lib文件夹中。您将在最终的war文件中找到所有这些罐子。
答案 3 :(得分:2)
我建议在Maven存储库服务器(如Nexus或Artifactory)中创建“第三方”存储库,然后将jar上传到那里。即使这意味着将jar放入Maven,至少使用存储库服务器,任何将构建应用程序的人都可以使用它。
答案 4 :(得分:2)
有一个更简单的解决方案,即在插件中设置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>
答案 5 :(得分:0)
将lib路径更改为: 的src /主/ web应用/ WEB-INF / lib中
:
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/xxxx.jar</systemPath>
答案 6 :(得分:-1)
我知道我已经很晚了但是我想知道你为什么不放入.m2文件中的本地仓库中的jar并从那里添加对pom的引用?