我创建了一个新的Spring Web应用程序,我非常想使用Maven来处理构建/依赖项。我的问题是项目取决于一些现有的本地项目,并且目前不是一种选择。是否有可能依赖这些项目而不对它们进行治疗?
答案 0 :(得分:9)
我认为最简单的方法是将本地依赖项部署到本地存储库,以便maven可以将其用作常规依赖项。
将本地jar
文件部署到本地存储库使用命令行,如:
mvn install:install-file -Dfile=<MY-FILE> -DgroupId=MY-GROUP-ID -DartifactId=MY-ARGIFACT -Dversion=MY-VERSION -Dpackaging=jar
如果您的公司中有像Artifactory这样的共享存储库,则可以在那里部署jar。否则,每个开发人员都必须部署到他的本地存储库中。好消息一定只能做一次。
EDIT。
这是一种将项目到项目的依赖关系定义为pom.xml
<dependency>
<groupId>com.mycompany.util</groupId>
<artifactId>util</artifactId>
<version>${com.mycompany.version}</version>
</dependency>
就是这样。 Util只是我工作区的另一个项目。
答案 1 :(得分:2)
不,你不应该试试。 Maven的主要目标是实现标准化构建。这就是使Maven易于使用的原因:例外不是常态。这就是为什么Maven要求所有依赖项都采用典型的Maven格式(POM + jar)。
当你说“目前不能选择它们”时,你基本上会说“Maven目前不是一种选择”。根据我的经验,将现有项目转换为Maven只需要几分钟......除非所述项目使用混乱,不可靠的构建过程,在这种情况下,你真的应将其转换为Maven ASAP才能停止浪费更多宝贵的时间。 : - )
如果其他一切都失败了,请使用构建服务器从依赖项目生成JAR文件,并将它们部署到公司范围的存储库服务器或仅部署到本地计算机。
答案 2 :(得分:1)
这个答案有点迟了,但是万一有人需要它,我找到了使用Maven的Build Helper Plugin的解决方案,也就是说,如果您不想将非Maven项目作为jar部署:
因此,基本上,您只需在<sources>
标签中添加非Maven项目的源目录:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>C:\Users\user123\eclipse-workspace\my_non_maven_project\src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
现在,如果该非Maven项目具有其自己的依赖关系,则还需要在您的Maven项目的<dependencies>
部分中添加它们。