如何将本地非maven项目添加为maven项目的依赖项?

时间:2012-08-28 15:59:41

标签: java spring maven

我创建了一个新的Spring Web应用程序,我非常想使用Maven来处理构建/依赖项。我的问题是项目取决于一些现有的本地项目,并且目前不是一种选择。是否有可能依赖这些项目而不对它们进行治疗?

3 个答案:

答案 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>部分中添加它们。