如何将本地jar文件(还不是Maven存储库的一部分)直接添加到项目的库源中?


当前回答

由于某种原因,在我正在维护的web应用程序中,Alireza Fattahi的解决方案和JJ Roman的解决方案都不能正常工作。在这两种情况下,编译都是正常的(它看到了jar),但包装没有将jar包含在战争中。

我设法使其工作的唯一方法是将jar放在/src/main/webapp/WEB-INF/lib/上,然后将其与Fattahis或Roman的解决方案结合。

其他回答

如果您是Spring开发人员,您会发现从Spring Boot构建中生成的JAR在另一个构建中不能作为依赖JAR工作。检查您的POM是否具有以下功能:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

此外,如果运行mvn包,请检查是否在目标/目录中看到.jar原始文件以及.jar。如果是这样的话,您需要将.jar.original文件用于任何本地开发(将其放入lib/或其他文件中)

你当然可以解决这个问题;请参阅参考Spring插件手册的原始帖子。我认为,您需要<configuration><attach>false</attach><configuration>,然后必须进行部署,Maven应该使用.jar.original文件。我自己还没有尝试过,所以请告诉我!

在POM文件中添加您自己的本地JAR,并在maven构建中使用它。

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar

例如:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar

然后将其添加到POM中,如下所示:

一种方法是将其上传到您自己的Maven存储库管理器(如Nexus)。无论如何,拥有一个自己的存储库管理器是很好的做法。

我最近看到的另一个好方法是在构建生命周期中包含Maven安装插件:在POM中声明将文件安装到本地存储库。这是一个有点但很小的开销,并且不涉及手动步骤。

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

您可以直接添加本地依赖项(如build maven项目中所述,包含专有库),如下所示:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>

使现代化

在新版本中,此功能被标记为已弃用,但仍在工作,尚未删除(您只需在maven启动期间的日志中看到警告)。maven集团对此提出了一个问题https://issues.apache.org/jira/browse/MNG-6523(您可以参与并描述此功能在某些情况下有帮助的原因)。我希望这一功能仍然存在!

若你们问我,只要这个特性没有被删除,我就用它来依赖我项目中的一个不适合存储库的jar文件。如果删除此功能,那么,这里有很多好的答案,我可以稍后选择!

也许有人会感兴趣:https://github.com/Limraj/maven-artifact-generator

Console程序在本地存储库中生成maven工件,并根据jar的路径为pom.xml配置依赖项。您可以对一个文件执行此操作,但如果您有多个jar文件,则最有用。

路径jar:java-jar maven-artifact-generator-X.X.X.jar-p path_to_jars-g com.test-V 1.2.3-p jar

震击器:java-jar maven-artifact-generator-X.X.X.jar-f file_jar-g com.test-V 1.2.3-P jar

这将在本地maven存储库中生成一个工件,并在gen.log中为pom.xml生成依赖项。ArtifactId是jar文件的名称。

需要安装maven。在widnows 7和macOS X(unix/linux)上测试。