我试图用maven通过命令行下载一些工件。我只知道工件的基本版本,但是它们在nexus存储库中有一个单独的时间戳。
例如:
工件com。我的公司。主题:任何工件:3.0.0-SNAPSHOT:war:plugins
具有以下坐标com。我的公司。主题:任何工件:3.0.0-20161212.140040-1:war:nexus存储库中的插件
。
我想像这样下载工件:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:copy -Dartifact=com.mycompany.subject:any-artifact:3.0.0-SNAPSHOT:war:plugins -DoutputDirectory=./my-tmp
我在文档中找到了-Dmdep。使用BaseVersion
选项,但这只会将下载的工件与基本版本一起保存。
编辑:
问题是,我只知道一个工件的基本版本,例如3.0.0-SNAPSHOT,当我尝试像上面一样从nexus下载它时,它失败了,因为nexus中的版本带有时间戳。
maven-metadata.xml:
<metadata>
<groupId>com.mycompany.subject</groupId>
<artifactId>any-artifact</artifactId>
<versioning>
<versions>
<version>3.0.0-SNAPSHOT</version>
</versions>
<lastUpdated>20161214160043</lastUpdated>
</versioning>
</metadata>
堆栈跟踪错误:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.319 s
[INFO] Finished at: 2016-12-19T15:04:06+01:00
[INFO] Final Memory: 16M/298M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:copy (default-cli) on project standalone-pom: Unable to find artifact. Could not find artifact com.mycompany.subject:any-artifact:3.0.0-SNAPSHOT in <remote-repository-id> (https://<nexus-repo-url>/nexus/repository/<specified-repository>)
[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 ...
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId ...
[ERROR]
[ERROR]
[ERROR] com.mycompany.subject:any-artifact:3.0.0-SNAPSHOT
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] remote-repository-id (https://<nexus-repo-url>/nexus/repository/<specified-repository>),
[ERROR] -> [Help 1]
问题是这个项目没有pom。因此maven可能需要带有时间戳等的确切版本号。
现在,我使用-DGeneratePom=true
选项部署工件,并且我可以仅使用基本版本号从存储库下载最新工件。
我用我的真实情况来说明问题。 我使用logback 1.0.1进行日志记录,它包含SLF4J 1.6.4作为依赖项。我还为遗留日志API(Java . util . logging、log4j和commons-logging)使用SLF4J API桥,它们不是显式的依赖关系。这些也必须(最好)是版本1.6.4。 为了使我的pom.xml尽可能整洁和无错误,我想强制这些API桥接器与SLF4J版本相
MVNRepository通常为每个依赖项列出“版本”和“更新”。 如果我发布自己的包,如何指定“更新”版本 Maven在解决传递依赖时使用了哪个依赖项?所以如果我的包依赖于包A,它依赖于包B,版本=1.0,更新=1.1。我会得到哪个版本的B?
我有一个简单的Spring启动应用程序,我试图添加Spring Cloud consul。Spring Cloud consul依赖于较新版本的Spring启动。在我的POM中,我为所有的Spring启动工件指定了版本。 问题是,即使为指定了1.3.5版本,它仍然下载1.2.3版本的依赖项 有没有办法让maven获取所有Spring启动工件的,包括传递依赖项?我知道我可以明确列出它们,但有没有更好
问题内容: 最近,我一直在研究前一段时间开发的项目中的一些改进,这就是我所发现的。pom文件中的许多依赖项都没有指定版本,但是已经解决了。该项目包含1个根模块和2个子模块。使用了Aggregator模式,这意味着根本没有dependencyManagement部分。上层项目仅聚合了2个模块,仅此而已。子项目并不将其称为父项。他们有不同的父母。我无法理解的是,子项目本身或它们的父项(事实上,它也没有
当我对pom文件的属性部分中定义的键的依赖项使用version时,依赖项不会被下载,但是当我对依赖项的version进行硬编码时,依赖项会被下载。 repo.maven.apache.org/maven2/info/cukes/cucumber-java/{cucumber-version}/cucumber-java-{cucumber-version}.pom 为什么不是用在propertie
问题内容: 在Maven中,依赖关系通常是这样设置的: 现在,如果你正在使用发布频繁的库,则不断更新标记可能会有些烦人。有什么方法可以告诉始终使用最新的可用版本(来自存储库)? 问题答案: 有关更多详细信息,请参见Maven书籍的POM语法部分。或者在Dependency Version Ranges上查看此文档,其中: 方括号([&])表示“封闭”(含)。 括号((&))表示“开放”(排除)。