如何将一个本地非 Maven 项目添加为 Maven 项目的依赖?

IT小君   2023-10-23T23:14:40

我创建了一个新的Spring Web应用程序,我非常希望使用Maven来处理构建/依赖关系。我的问题是该项目依赖于一些现有的本地项目,当前无法将它们转化为Maven项目。是否有可能在不将它们转化为Maven项目的情况下依赖于这些项目?

评论(3)
IT小君

我认为最简单的方法是将您的本地依赖部署到本地仓库,这样Maven可以将其作为常规依赖使用。

要将本地的jar文件部署到本地仓库,请使用以下命令行:

mvn install:install-file -Dfile=<我的文件> -DgroupId=我的组ID -DartifactId=我的Artifact -Dversion=我的版本 -Dpackaging=jar

如果您的公司有共享仓库,例如Artifactory,您可以在那里部署jar。否则,每个开发人员都必须将其部署到自己的本地仓库。好消息是这只需要做一次。

编辑。

以下是在pom.xml中定义项目之间依赖关系的方法

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

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

2023-10-23T23:15:14   回复
IT小君

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

当你说"将它们转化为maven不是当前的选择"时,基本上就是说"maven目前不可用"。根据我的经验,将现有项目转换为Maven仅需几分钟...除非该项目使用混乱、不可靠的构建过程,否则你真的应该尽快将其转换为Maven来避免浪费更多宝贵的时间。:-)

如果其他一切都失败了,可以使用构建服务器从依赖项目中生成JAR文件,并将其部署到公司范围的存储库服务器或本地机器上。

2023-10-23T23:15:24   回复
IT小君

这个答案可能有点晚,但如果有人还需要的话,我找到了使用Maven的Build Helper插件的解决方案,前提是你不想将非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>部分中。

2023-10-23T23:16:21   回复