4

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

4

3 回答 3

9

我认为最简单的方法是将本地依赖项部署到本地存储库,以便 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 只是我工作空间中的另一个项目。

于 2012-08-28T16:05:22.523 回答
3

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

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

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

于 2012-08-28T16:13:28.507 回答
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 项目有自己的依赖项,您还需要将它们添加到<dependencies>maven 项目的部分中。

于 2020-02-17T00:02:01.477 回答