我有一个专有的JAR,我想将其作为依赖项添加到我的POM中.

但我不想将其添加到存储库.原因是我想让我常用的Maven命令(如mvn compile等)开箱即用.(不需要开发人员自己将其添加到某个存储库).

我希望jar位于源代码管理中的第三方库中,并通过pom的相对路径链接到它.xml文件.

这能做到吗?怎样

推荐答案

我希望JAR位于源代码控制中的3rdparty lib中,并通过pom.xml文件的相对路径链接到它.

如果你真的想要这个(理解,如果你不能使用公司存储库),那么我的建议是使用项目本地的"文件存储库",并创建一个system范围的依赖关系.应该避免system个范围,这种依赖关系在很多情况下(例如在组装中)都不能很好地工作,它们带来的麻烦多于好处.

因此,请在项目本地声明一个存储库:

<repositories>
  <repository>
    <id>my-local-repo</id>
    <url>file://${project.basedir}/my-repo</url>
  </repository>
</repositories>

使用install:install-filelocalRepositoryPath参数在其中安装第三方库:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \ 
                         -DartifactId=<myArtifactId> -Dversion=<myVersion> \
                         -Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>

Update:在使用2.2版本的插件时,install:install-file似乎忽略了localRepositoryPath.然而,它适用于2.3及更高版本的插件.因此,请使用插件的完全限定名来指定版本:

mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
                         -Dfile=<path-to-file> -DgroupId=<myGroup> \ 
                         -DartifactId=<myArtifactId> -Dversion=<myVersion> \
                         -Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>

maven-install-plugin documentation

最后,像其他依赖项一样声明它(但不包括system范围):

<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>3rdparty</artifactId>
  <version>X.Y.Z</version>
</dependency>

这是一个比使用system范围更好的解决方案,因为您的依赖关系将被视为一个好公民(例如,它将包含在程序集中等等).

现在,我必须提到,在企业环境中处理这种情况的"正确方法"(这里可能不是这种情况)是使用企业存储库.

Java相关问答推荐

如果它最终将被转换为int类型,为什么我们在Java中需要较小的integer类型?

PostgreSQL货币兑换率查询

javafx getHostServices(). showDocument()调出Chrome而不是默认浏览器(Linux)

将Nimbus设置为计算机上运行的所有Java应用程序的默认外观

查找最大子数组的和

在Java中测试DAO方法:假实现与内存数据库

ApachePOI:不带换行的新行

如何创建一个2d自上而下的移动系统,其中移动,同时持有两个关键是可能的处理?

在运行MVN测试时,为什么构建失败,并显示了java.lang.ClassNotFoundException:java.net.http.HttpResponse?

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

使用Spring和ActiveMQ的侦听器方法引发属性名称不能重复为空警告

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

有效的公式或值列表必须少于或等于255个字符

在Oracle JDBC连接中,连接失效和身份验证失效是什么意思?

Oj算法 MatrixR032从字符串、归一化和余弦相似度计算创建

向Java进程发送`kill-11`会引发NullPointerException吗?

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

H2数据库仅支持%1个结果集?

如何在Spring Boot Auth服务器上正确配置CORS?

Bash数组的单引号元素并使用空格连接