如何在项目的库源中直接添加本地jar文件(尚未成为Maven存储库的一部分)?
我有一个专有的jar,我想作为依赖添加到我的pom.
但我不想将它添加到存储库.原因是我希望我的常用maven命令等mvn compile开箱即用.(没有要求开发人员将其自己添加到某个存储库中).
我希望jar在源代码控制中位于第3方库中,并通过pom.xml文件的相对路径链接到它.
可以这样做吗?怎么样?
我已经在Stack Overflow上找到了如何在项目中包含第三方JAR而不将其安装到"本地存储库"的答案:
我可以在没有安装的情况下将jar添加到maven 2 build classpath吗?
但是,当我使用Maven Shade插件创建包含项目所有依赖项的JAR时,第三方JAR不会自动包含在内.
如何让Maven Shade插件将这样的第三方JAR添加到着色的JAR中?
根据得到的答案,我做到了.我做的是,将这个片段添加到我的pom.xml的开头:
<repositories>
<repository>
<id>repo</id>
<url>file://${basedir}/repo</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
然后为我的项目添加了一个依赖项,也添加到pom.xml:
<dependencies>
<dependency>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>0.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
然后运行命令行将包添加到'repo':
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file
-Dfile=<my-jar>.jar -DgroupId=dummy -DartifactId=dummy
-Dversion=0.0.0 -Dpackaging=jar -DlocalRepositoryPath=`pwd`/repo/
Run Code Online (Sandbox Code Playgroud)
(不确定repo路径是否需要完整路径,但不想冒险.)
repo子目录的内容现在是:
repo/dummy/dummy/0.0.0/dummy-0.0.0.jar
repo/dummy/dummy/0.0.0/dummy-0.0.0.pom
repo/dummy/dummy/maven-metadata-local.xml
Run Code Online (Sandbox Code Playgroud)
现在我可以将其检入版本控制,并且没有本地或远程依赖项.