我继承了一个Maven项目。我只是将它用作构建工具,我想尽可能少地干扰事情。我必须对其中一个Java文件稍加补充,并且这个添加要求我在构建路径中包含一个新jar。我怎么说:这里是一个罐子,只需使用它。它不需要版本化,依赖或下载或任何东西,只需使用它。任何帮助将不胜感激。
编辑:我找到this,实际上有效(!)。如果有人知道这些事情可以阅读这个答案,如果它看起来合理正确,请将此问题作为副本关闭。
编辑:不,我误解了我的结果。 似乎不起作用。
答案 0 :(得分:3)
到目前为止,使用maven管理依赖关系的最佳方法是从存储库中获取它们,但是从最理想到最少的顺序,我想到了四个总体选项:
<dependency>
元素,也可能添加一个<repository>
,以便知道从何处获取依赖项。<scope>
的{{1}}元素设置为值“system”,并添加包含完整路径的<dependency>
元素到有问题的罐子里。编辑:由于选项4似乎适合您,只需将jar放入您的项目并将其提交到您的版本控制。然后,假设jar在项目的lib / foo.jar中,将其添加到POM的依赖项中:
<systemPath>
这一切都来自记忆,但听起来不错。
答案 1 :(得分:1)
以下是一些相关答案: Maven: keeping dependent jars in project version control
我不建议使用来自POM的install:install-file - 如果它是一次性要求,您最好从命令行使用它并将其记录为准备步骤。但是,使构建自包含或提供具有所需工件的存储库肯定是更好的选择。
答案 2 :(得分:-1)
以下是如何继续。根据以下pom.xml
创建一个单独的maven项目。
<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项目来注入丢失的罐子。
然后,使用您在上面pom.xml
中定义的坐标(artifactid,version和packaging)在项目中添加依赖项。