【问题标题】:Import external lib into local repository using maven-install-plugin in pom在 pom 中使用 maven-install-plugin 将外部库导入本地存储库
【发布时间】:2020-03-17 19:22:46
【问题描述】:

我的问题是我想将一个外部库自动导入到用户的本地 maven 存储库中。

这是我使用 maven-install-plugin 使其工作的方法:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <id>install-external</id>
                    <phase>clean</phase>
                    <configuration>
                        <file>${basedir}/myjar.jar>
                        <repositoryLayout>default</repositoryLayout>
                        <groupId>mygroupid</groupId>
                        <artifactId>myartefactid</artifactId>
                        <version>myversion</version>
                        <packaging>jar</packaging>
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

但是在 pom 中使用这个,为了让它工作,我必须在两个不同的命令中执行:

mvn clean 
mvn install

如果我只是在跑步

 mvn clean install

在安装阶段无法解决我的依赖关系(除非我单独执行了 mvn clean 并且我当然没有清理本地存储库)。只有当我单独运行“mvn clean”时,Clean 似乎才会调用插件。

我想要的是在运行“mvn install”时自动导入我的依赖项。或者至少在单个命令中运行“mvn clean install”时。

【问题讨论】:

  • 图书馆从哪里来?另一个 Maven 项目?
  • 您使用什么操作系统?如果它通过分别运行mvn cleanmvn install 来工作,并且您只需要一个命令来执行这两个操作,您可以为其创建一个别名,例如:alias mvnci='mvn clean; mvn install'
  • 该库来自另一家公司,它是一个 maven 项目,但他们仅以 .jar 格式提供该库。
  • 我正在使用 ubuntu。但我不能做这样的别名。如果我想解决这个问题,那是因为我无法向其他将利用该项目的人解释他们必须分别完成这两个步骤。
  • 如果您在公司环境中工作,通常需要一个存储库管理器。然后,您可以简单地将该 jar 文件放入存储库管理器中,并作为通常的依赖项重用。其他任何事情都会使它变得更加复杂;更容易出错等。

标签: java maven plugins installation


【解决方案1】:

您的解决方案不能仅使用一个 Maven 命令。

如果您使用 mvn something 启动 Maven,则依赖项会首先解析,因此您在构建期间通过插件安装的任何内容都不会被发现。

正如khmarbaise 已经说过的那样,解决方案是首先将工件放入存储库中。通常的解决方案是您的公司 Nexus/Artifactory(如果您进行认真的 Maven 开发,应该有一个)。

如果这确实不可能,您可以使用一个目录作为 Maven 存储库,如下所述:https://stackoverflow.com/a/28762617/927493

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    相关资源
    最近更新 更多