【问题标题】:How to add a local non-maven project as a dependency for a maven project?如何添加本地非 maven 项目作为 maven 项目的依赖项?
【发布时间】:2012-08-28 15:59:40
【问题描述】:

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

【问题讨论】:

  • 试试这个,mkyong.com/maven/…
  • 现有的本地项目是用另一个命令行构建工具 Ant 构建的,还是使用 IDE “构建”和“发布”?

标签: java spring maven


【解决方案1】:

我认为最简单的方法是将本地依赖项部署到本地存储库,以便 maven 可以将其用作常规依赖项。

要将本地 jar 文件部署到本地存储库中,请使用如下命令行:

mvn install:install-file -Dfile=<MY-FILE> -DgroupId=MY-GROUP-ID -DartifactId=MY-ARGIFACT -Dversion=MY-VERSION -Dpackaging=jar

如果您在公司中有像 Artifactory 这样的共享存储库,您可以在那里部署 jar。否则,每个开发人员都必须部署到他的本地存储库中。好消息,它必须只做一次。

编辑。

这是一种将项目到项目的依赖关系定义为pom.xml的方法

    <dependency>
        <groupId>com.mycompany.util</groupId>
        <artifactId>util</artifactId>
        <version>${com.mycompany.version}</version>
    </dependency>

就是这样。 Util 只是我工作空间中的另一个项目。

【讨论】:

  • 有什么方法可以做到这一点,而不必存档本地项目?新代码会定期推送给他们,我不希望不得不不断地重新打包项目并将它们安装在本地存储库中。
  • 如果您谈论的是本地项目,那就更简单了。在您的 pom.xml 中使用项目到项目的依赖项。我将在一分钟内发布示例作为我答案的补充。
  • 这是一个很棒的答案,只需轻轻敲击键和点击就可以满足我的需要。
  • 我不明白替代选项。这就是你如何依赖 Maven 项目。这有什么帮助?我的非 maven 项目没有 groupId、artifactId 和 version。
  • @AlexR 您的 UTIL 项目是 Maven 项目还是非 Maven 项目?
【解决方案2】:

不,您不应该那样做。 Maven 的主要目标是有一个标准化的构建。这就是 Maven 如此易于使用的原因:异常不是常态。这就是为什么 Maven 要求所有依赖项都采用典型的 Maven 格式(POM + jar)。

当你说“mavenizing 它们目前不是一个选项”时,你基本上是在说“Maven 目前不是一个选项”。根据我的经验,将现有项目转换为 Maven 只需几分钟...除非所述项目使用混乱、不可靠的构建过程,在这种情况下,您真的应该尽快将其转换为 Maven 以停止浪费你更多宝贵的时间。 :-)

如果其他一切都失败了,请使用构建服务器从相关项目生成 JAR 文件,并将它们部署到公司范围的存储库服务器或仅部署到您的本地计算机。

【讨论】:

  • 我完全同意我们的整个代码库都应该使用 Maven,并且最终会使用,但是现在当权者希望在本周末看到我的新项目,而 Mavenzing 有几十个项目和测试它们需要相当长的时间。
【解决方案3】:

这个答案有点晚了,但以防万一有人需要,我使用 Maven 的Build Helper Plugin 找到了解决方案,也就是说,如果您不想将非 Maven 项目部署为 jar:

所以基本上你只需在&lt;sources&gt;标签中添加非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 项目的 &lt;dependencies&gt; 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2012-07-28
    • 2017-10-19
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    相关资源
    最近更新 更多