如果我想使用一个不在maven公共仓库中的第三方库,最好的方法是什么,可以将其作为项目的依赖项包含进去,以便当别人检查我的代码时,仍然能够构建它?
例如:
我的应用程序"A"依赖于jar包"B",但该jar包不存在于公共仓库中。然而,我希望将"B"作为"A"的依赖项添加,这样世界另一端的人可以检出代码并仍然能够构建"A"。
如果我想使用一个不在maven公共仓库中的第三方库,最好的方法是什么,可以将其作为项目的依赖项包含进去,以便当别人检查我的代码时,仍然能够构建它?
例如:
我的应用程序"A"依赖于jar包"B",但该jar包不存在于公共仓库中。然而,我希望将"B"作为"A"的依赖项添加,这样世界另一端的人可以检出代码并仍然能够构建"A"。
你可以自己安装这个项目。
或者你可以像下面这样使用system
作用域:
<dependency>
<groupId>org.group.project</groupId>
<artifactId>Project</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/project-1.0.0.jar</systemPath>
</dependency>
systemPath
需要项目的绝对路径。为了方便起见,如果jar文件在存储库/项目中,则可以使用绑定到项目根目录的${basedir}
属性。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<inherited>false</inherited>
<executions>
<execution>
<id>install-anet</id>
<phase>validate</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>install:install-file</argument>
<argument>-Dfile=service/lib/anet-java-sdk-1.4.6.jar</argument>
<argument>-DgroupId=net.authorize</argument>
<argument>-DartifactId=anet-java-sdk</argument>
<argument>-Dversion=1.4.6</argument>
<argument>-Dpackaging=jar</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
在上面的例子中,jar包的位置位于“service”模块的lib文件夹中。<dependency>
<groupId>net.authorize</groupId>
<artifactId>anet-java-sdk</artifactId>
<version>1.4.6</version>
</dependency>
虽然在Maven规范中使用系统作用域可能会生效,但不建议这样做,因为它是不可移植的。
Maven书籍中的描述如下:
system-系统作用域与provided作用域类似,但您必须提供本地文件系统中JAR的显式路径。这旨在允许编译针对可能是系统库的本地对象。假定始终可用该构件,并且不会在存储库中查找。如果将作用域声明为系统,则还必须提供systemPath元素。请注意,不建议使用此作用域(应始终尝试引用公共或自定义Maven存储库中的依赖项)。
最好的方法是将其安装到您的本地存储库或企业存储库中,以便所有同事都可以访问。
如果您使用像Nexus这样的存储库管理器,则非常容易实现。
一般来说,您应该首先将第三方jar包放入本地存储库中。之后,您可以通过将依赖项添加到pom.xml文件中来使用它。
例如:
1.首先将jar包放入本地存储库中:
mvn install:install-file -Dfile=<path-to-file>
注意:此命令需要maven-install-plugin 2.5版本或更高版本。如果没有,您可以参考这里。
2.通过将依赖项添加到项目的pom.xml中来使用jar包。
只需将以下内容添加到您项目的pom.xml文件中:
<dependency>
<groupId>${the groupId in the jar's pom.xml}</groupId>
<artifactId>${the artifactId in the jar's pom.xml}</artifactId>
<version>${the version in the jar's pom.xml}</version>
</dependency>
3. 然后您可以通过运行 mvn package
或 mvn deploy
来打包或部署您的项目。
第三方 jar 包也将包含在打包文件中。
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
。 - Chen Zhu <dependency>
<groupId>somegroupid</groupId>
<artifactId>someartifact</artifactId>
<version>1.0.0</version>
</dependency>
mvn package
确保我的项目依赖项已解决,并将其打包到我的 war 文件中。如果您正在使用Groovy/Grail工具套件(GGTS),那么您可以直接导入第三方依赖项(但请确保您在本地存储库中拥有该第三方依赖项),步骤如下:
等待一段时间,可能会消除该问题的错误。