我可以通过install:install-file安装一个工件, 但我怎么下载藏物呢?

例如:

mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST

当前回答

关于如何获取工件二进制文件,Pascal Thivent的答案是它,但也要获得工件源jar,我们可以使用:

mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources

e.g.

mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources

这是因为工件参数实际上由groupId:artifactId:version[:packaging][:classifier]组成。只有包装和分类器是可选的。

使用jar作为打包器,使用源代码作为分类器,maven依赖插件可以理解我们要求的是源jar,而不是工件jar。

不幸的是,现在源jar文件不能传递下载,这是有意义的,但理想情况下,我相信它也可以像maven eclipse插件一样尊重downloadSources选项。

其他回答

下面是使用Maven 3.6获取ASM-7的示例:

mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar

或者你可以从这里下载罐子:https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm然后

mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar

你可以使用maven依赖插件,它有一个很好的依赖:从2.1版开始。不需要pom,一切都发生在命令行上。

为了确保找到依赖项:get目标,你需要显式地告诉maven使用2.1版本,也就是说,你需要使用插件的完全限定名,包括版本:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl=url \
    -Dartifact=groupId:artifactId:version

更新:对于旧版本的Maven(2.1之前),可以通过强制Maven副本使用给定版本的插件来正常运行dependency:get(不使用完全限定的名称和版本)。

可以这样做:

1. 在~/.m2/settings.xml文件的<settings>元素中添加以下一行:

<usePluginRegistry>true</usePluginRegistry>

2. 添加文件~/.m2/plugin-registry.xml,包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <useVersion>2.1</useVersion>
      <rejectedVersions/>
    </plugin>
  </plugins>
</pluginRegistry>

但这似乎不再适用于maven 2.1/2.2。实际上,根据插件注册表介绍,Plugin - Registry .xml的特性已经重新设计(为了可移植性),插件注册表目前在Maven 2中处于半休眠状态。所以我认为我们现在必须使用长名称(当使用没有pom的插件时,这是依赖项背后的思想:get)。

要在指定位置复制工件,请使用copy而不是get。

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.2:copy \
  -DrepoUrl=someRepositoryUrl \
  -Dartifact="com.acme:foo:RELEASE:jar" -Dmdep.stripVersion -DoutputDirectory=/tmp/

关于如何获取工件二进制文件,Pascal Thivent的答案是它,但也要获得工件源jar,我们可以使用:

mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources

e.g.

mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources

这是因为工件参数实际上由groupId:artifactId:version[:packaging][:classifier]组成。只有包装和分类器是可选的。

使用jar作为打包器,使用源代码作为分类器,maven依赖插件可以理解我们要求的是源jar,而不是工件jar。

不幸的是,现在源jar文件不能传递下载,这是有意义的,但理想情况下,我相信它也可以像maven eclipse插件一样尊重downloadSources选项。

不幸的是,maven-dependency-plugin:get不支持版本范围,例如[2.17.1,)或[,)

如果你需要下载一个特定的maven工件,但是使用版本范围,就像我做的那样,看这里:

下载带有版本范围的Maven工件