我继承了一个Maven项目。我只是把它作为一个构建工具,我想尽可能少地打扰东西。我必须对其中一个Java文件做一些添加,并且这个添加要求我在构建路径中包含一个新的jar。怎么说呢:这里有一个罐子,就用它吧。它不需要版本控制,不需要依赖,不需要下载,只需要使用。如有任何帮助,不胜感激。
EDIT:我发现了这个,它实际上是有效的(!)。如果知道这类事情的人可以读到这个答案,如果它看起来合理正确,请关闭这个问题作为dup。
EDIT:不,我误解了我的结果。它不似乎工作
到目前为止,使用maven管理依赖项的最佳方法是从存储库中获取依赖项,但是您会想到从最理想到最不理想的四个选项:
- 如果jar是一个通用的第三方库,您几乎肯定会在某个存储库中找到它。你只需要添加一个
<dependency>
元素,也可能添加一个<repository>
元素,这样它就知道从哪里获得依赖项。 在任何repo中都不可用的自制jar应该部署到本地存储库,比如Nexus,它对整个团队/公司都可用。然后像选项1一样将依赖项添加到项目中。这样,它只需要处理一次,其他人就可以通过正常的Maven机制获得jar。为了只在本地处理问题,而不提供工件的任何可重用性,您可以使用install:install-file目标将其安装到本地repo(即在~/.m2/repository中的本地缓存)。 - 最后,也是最不理想的,您可以使用系统范围的依赖项。这意味着您在文件系统的某个地方有可用的jar文件,将
<dependency>
的<scope>
元素设置为值"system",并添加包含有关jar的完整路径的<systemPath>
元素。
Edit:由于选项4似乎适合您,只需将jar放入项目并将其提交到版本控制。然后,假设jar位于项目中的lib/foo.jar,将其添加到POM的依赖项中:
<dependency>
<groupId>some-group</groupId>
<artifactId>some-artifact</artifactId>
<version>1.2.3.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/foo.jar</systemPath>
</dependency>
以下是一些相关的答案:Maven:在项目版本控制中保留依赖的jar
我不建议从POM使用install:install-file——如果这是一次性需求,您最好从命令行使用它,并将其记录为准备步骤。然而,使构建自包含或提供包含所需构件的存储库无疑是更好的选择。
如何继续。创建一个独立的maven项目,灵感来自下面的pom.xml
。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.dwst</groupId>
<artifactId>MavenMissingJars</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>Maven Missing Jars</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>dProguard-4.6</id>
<phase>generate-sources</phase>
<goals>
<goal>install-file</goal>
</goals>
<inherited>false</inherited>
<configuration>
<file>toinstall/4.6/proguard.jar</file>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard</artifactId>
<version>4.6</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
假设有一个/toinstall/4.6/
目录相对于你的pom.xml
,并且有一个名为proguard.jar
的jar在那里,调用这个插件会将jar从你的本地目录复制到你的maven本地存储库。
这必须执行一次,这就是为什么最好有一个单独的小maven项目来注入缺失的jar。
然后,使用您在上面的pom.xml
中定义的坐标(artifactid,版本和打包)在您的项目中添加依赖项。