如何从Maven构建中手动更新Maven仓库?

3

目前我们没有自己的仓库。所以,当我们使用maven构建时,它会在当前用户的home目录下创建.m2仓库。

现在有两个第三方JAR,它们没有在Maven Central中找到。假设其中一个是hasp-srm-api.jar。今天的流程如下:

a. 依赖于hasp-srm-api.jar的项目的pom.xml包含以下行:

    <dependency>
      <groupId>com.safenet</groupId>
      <artifactId>hasp</artifactId>
      <version>1</version>
    </dependency>

b. 在进行第一次构建之前,我们执行以下命令:

    mvn install:install-file -Dfile=hasp-srm-api.jar -DgroupId=com.safenet -DartifactId=hasp -Dversion=1 -Dpackaging=jar

我的问题是:是否可能自动化这一步骤?我希望能够告诉maven检查是否存在hasp artifact,如果不存在,则手动使用上述命令安装它。我该怎么做?


你是通过Maven构建hasp-srm-api.jar文件,或者换句话说:你是否有它的pom.xml文件? - khmarbaise
我认为使用Maven不可能实现。您应该设置一个企业级Maven仓库并在其中部署构件。 - gontard
@khmarbaise - 我们没有构建 hasp-srm-api.jar,我认为它是由 SafeNet 原样提供给我们的。我们可以对其进行反编译和构建,但不确定是否允许这样做。 - mark
3个回答

5

不可以按照你所建议的方式,让Maven自动将构件部署到仓库中。无论是本地仓库还是远程仓库都不行。如果该构件已经存在于某个仓库中,你可以将该仓库添加到项目的已知远程仓库列表中,但除此之外,你必须手动添加它。

你可以将构件添加到本地的.m2仓库中,但那只对该特定环境有效。其他开发人员将不得不重复这个过程。这正是运行自己的仓库服务器(如Nexus)的主要吸引力之一;你可以将构件添加到该仓库中,然后你组织中的所有人都可以永久地使用它。仍然没有办法自动部署构件,但这很容易做到,并且是永久的。

请注意,设置仓库管理器非常容易。强烈建议设置一个,这样整个Maven的事情就会变得更加清晰明了。


0

你还有另一个选择,就是编写自己的Maven插件。也许下面的链接是你开始的正确地方

MOJO FAQ


0
解决这类问题的最佳方案是使用存储库管理器,这将导致仅将此类依赖项安装一次到存储库管理器中,整个公司都可以像使用常规依赖项一样使用它。就是这样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接