您可以直接添加本地依赖项(如包含 propriatery 库的 build maven 项目中所述 ),如下所示:
<dependency>
<groupId>com.sample</groupId>
<artifactId>sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>
更新
在新版本中,此功能被标记为已弃用但仍在工作但尚未删除(您只需在 maven 启动期间在日志中看到警告)。 maven 小组就此问题提出了一个问题: https://issues.apache.org/jira/browse/MNG-6523 (您可以参与并说明为什么此功能在某些情况下有用)。我希望这个功能仍然存在!
如果您问我,只要不删除该功能,我就会使用它来依赖于我的项目中只有一个不适合存储库的淘气 jar 文件 。如果删除了这个功能,那么这里有很多好的答案我可以从以后选择!
将 JAR 安装到本地 Maven 存储库中,如下所示:
mvn install:install-file \
-Dfile=<path-to-file> \
-DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<packaging> \
-DgeneratePom=true
每个都指的是:
首先,我想对这个匿名 Stack Overflow 用户的答案给予赞扬 - 我很确定我之前已经看过类似的答案 - 但现在我找不到了。
将本地 JAR 文件作为依赖项的最佳选择是创建本地 Maven 存储库。这样的存储库只不过是一个包含 pom 文件的正确目录结构。
对于我的示例:我在${master_project}
位置上有我的主项目,而 subproject1 在${master_project}/${subproject1}
。
然后我在: ${master_project}/local-maven-repo
创建一个 Maven 存储库。
在位于${master_project}/${subproject1}/pom.xml
subproject1 中的 pom 文件中,需要指定存储库,该文件将文件路径作为 URL 参数:
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.parent.basedir}/local-maven-repo</url>
</repository>
</repositories>
可以为任何其他存储库指定依赖项。这使您的 pom 存储库独立。例如,一旦所需的 JAR 在 Maven central 中可用,您只需要从本地仓库中删除它,它将从默认仓库中提取。
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.servicebinder</artifactId>
<version>0.9.0-SNAPSHOT</version>
</dependency>
最后但并非最不重要的事情是使用 - DlocalRepositoryPath 开关将 JAR 文件添加到本地存储库,如下所示:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \
-Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
-DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
-Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
-DlocalRepositoryPath=${master_project}/local-maven-repo
安装 JAR 文件后,可以将 Maven 存储库提交到代码存储库,整个设置与系统无关。 ( GitHub 中的工作示例 )。
我同意让 JAR 承诺源代码回购不是一个好习惯,但在现实生活中,快速和肮脏的解决方案有时比完整的 Nexus repo 更好地托管一个你无法发布的 JAR。