使用命令行从Nexus下载具有依赖性的Maven工件

时间:2016-06-23 07:47:56

标签: java maven nexus maven-dependency-plugin maven-jar-plugin

我正在使用以下命令通过命令行从Nexus下载maven jar。

call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=bits:update-service:1.0.3 -Ddest=Setups/Services/update-service.jar

但我得到的是一个没有依赖关系的jar。在Maven中已经有一个带有依赖关系的jar,其名称为update-service-1.0.4-jar-with-dependencies.jar

我尝试了以下内容:

call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=bits:update-service:1.0.3[:packaging[:jar]] -Ddest=Setups/Services/update-service.jar

但它返回以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.4:get (default-cli) on project standalone-pom: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) bits:update-service:packaging[:jar]]:1.0.3[
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=bits -DartifactId=update-service -Dversion=1.0.3[ -Dclassifier=jar]] -Dpackaging=packaging[ -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=bits -DartifactId=update-service -Dversion=1.0.3[ -Dclassifier=jar]] -Dpackaging=packaging[ -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) bits:update-service:packaging[:jar]]:1.0.3[
[ERROR]
[ERROR] ----------
[ERROR] 1 required artifact is missing.
[ERROR]
[ERROR] for artifact:
[ERROR] org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false),
[ERROR] temp (http://10.101.15.190:8081/nexus/content/repositories/releases/, releases=true, snapshots=true)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

问题:下载带依赖项的jar的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

在这种情况下,

jar-with-dependencies是Maven classifier

  

分类器允许区分从同一POM构建但内容不同的工件。它是一些可选的任意字符串 - 如果存在 - 将附加到版本号之后的工件名称。

也就是说,1.0.4 jar及其 with-dependencies 变体通过分类器在Maven坐标上有所不同。

因此,使用maven-dependency-plugin及其get目标,您可以通过classifier选项指定classifier

  

要下载的工件的分类器。如果使用artifact,则忽略。

但是,您确实已使用artifact选项,因此根据文档将忽略上述选项。
如果你看一下artifact选项的文档:

  

groupId:artifactId:version[:packaging][:classifier]形式的字符串。

查看最后一个(可选)令牌[:classifier]。这正是你所缺少的。

您的artifact选项应如下所示:

-Dartifact=bits:update-service:1.0.4:jar:jar-with-dependencies

注意:在指定时,您实际上已经错误地使用了它:

-Dartifact=bits:update-service:1.0.3[:packaging[:jar]]

方括号[..]表示可选参数,不应在命令行调用中指定它们。此外,packaging字符串指定了要放置的值:同样,您不应该指定它,而只需将其替换为相应的值(在本例中为jar)。

答案 1 :(得分:1)

我已经创建了一个示例来向您展示方式。
我想在4.2.5.RELEASE版本中下载spring-webmvc的所有依赖项。
1)如果尚未在本地存储库中,则需要webmvc的pom。如果spring-webmvc已经在本地仓库中,则跳过1)。
2)您可以下载与刚刚下载的pom相关的所有依赖项。

  1. 下载pom
  2.   

    C:\ temp \ spring_web_mvc> mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:get -DgroupId = org.springframework -DartifactId = spring-webmvc   -Dversion = 4.2.5.RELEASE -Dtype = pom

    1. 下载所有依赖项
    2.   

      C:\ temp \ spring_web_mvc> mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:copy-dependencies -f C:\ repository2 \ org \ springframework \ spring-webmvc \ 4.2.5.RELEASE \ spring-webmvc-4.2.5.RELEASE.pom -DoutputDirectory = C:\ TEMP

           

      [INFO]扫描项目......   
      [警告]为org.springframework构建有效模型时遇到了一些问题:spring-webmvc:jar:4.2.5.RELEASE   
      ...   
      [INFO] ------------------------------------------- -----------------------------   
      [INFO]构建Spring Web MVC 4.2.5.RELEASE   
      [INFO] ------------------------------------------- -----------------------------   
      [警告] com.lowagie的pOM:itext:jar:2.1.7.js4缺失,没有相关信息可用   
      [INFO]   
      [INFO] --- maven-dependency-plugin:2.10:copy-dependencies(default-cli)@ spring-webmvc ---   
      [警告] org.apache.maven.doxia的POM:doxia-sink-api:jar:1.0无效,传递依赖(如果有)将不可用,启用调试日志记录以获取更多详细信息   
      [INFO] org.apache.tiles:tiles-request-mustache:jar:1.0.6已存在于目标中。   
      [INFO] com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.6.5已存在于目标中。   
      [INFO] org.apache.tiles:tiles-mvel:jar:3.0.5已存在于目标中。   
      [INFO] org.apache.tiles:tiles-jsp:jar:2.2.2已存在于目标中。   
      [INFO] org.jfree:jcommon:jar:1.0.23已存在于目标中。   
      ...   
      [INFO] org.apache.tiles:tiles-extras:jar:3.0.5已存在于目标中。   
      [INFO] ------------------------------------------- -----------------------------   
      [信息]建立成功   
      [INFO] ------------------------------------------- -----------------------------   
      [INFO]总时间:4.095秒   
      [信息]完成于:2016-06-23T11:06:03 + 02:00   
      [INFO]最终记忆:14M / 241M   
      [INFO] ------------------------------------------- -----------------------------   

      结果:

        

      C:\ TEMP \ spring_web_mvc> DIR   
      驱动器C中的卷没有标签。   
      卷序列号为F400-3CE5   
        
      目录C:\ temp \ spring_web_mvc   
        
      2016年6月23日11:05。   
      2016年6月23日11:05 ..   
      23/06/2016 10:24 4,467 aopalliance-1.0.jar   
      23/06/2016 10:24 192,035 bcmail-jdk14-1.38.jar   
      23/06/2016 10:24 192,035 bcmail-jdk14-138.jar   ...