标签: maven-metadata

如何使用 Gradle 将快照工件部署到 Maven 存储库并生成有效的 maven-metadata.xml?

我有以下build.gradle脚本:

apply plugin: 'java'
apply plugin: 'maven'

compileJava {
    targetCompatibility = "1.8"
    sourceCompatibility = "1.8"
    options.encoding = 'UTF-8'
}

ext.username = System.getProperty('username') != null ? System.getProperty('username') : mavenUser
ext.password = System.getProperty('password') != null ? System.getProperty('password') : mavenPassword

description = "Example project that shows how to use Gradle to build and deploy artifacts to Nexus"

configurations {
    deployerJars
}

repositories {
    maven { url "http://nexus:8081/nexus/content/groups/my-group/" }
    mavenCentral()
}

dependencies {
    deployerJars "org.apache.maven.wagon:wagon-http:2.2"
    testCompile group: 'junit', name: 'junit', version: '4.11' …
Run Code Online (Sandbox Code Playgroud)

nexus gradle maven maven-metadata

6
推荐指数
0
解决办法
1589
查看次数

如何强制Maven从中央存储库下载maven-metadata.xml?

我想要做的是强制Maven下载我在本地存储库中的每个工件的'maven-metadata.xml'.

默认的Maven行为是仅从远程存储库下载元数据(请参阅此问题).

为什么我要这样做:

目前,我有一个在构建机器中运行的远程存储库.通过远程存储库,我指的是位于构建计算机中的目录,其中包含构建我的Maven项目所需的所有依赖项.请注意,我没有使用像Nexus这样的存储库管理器,存储库只是我上传到构建机器的本地存储库的副本.

但是,由于我的本地存储库不包含"maven-metadata.xml"文件,因此构建计算机存储库中也缺少这些元数据文件.如果我可以从中央存储库检索元数据文件,那么就可以将一个工作的远程存储库上传到我的构建机器.

java maven-2 maven-metadata

5
推荐指数
1
解决办法
2万
查看次数

如何获取artifactory来更新虚拟仓库的maven-metadata.xml?

长时间读者,第一次问问...

我有一个独立的网络(没有互联网接入).它有一个神器服务器,它有虚拟的libs-snapshotlibs-release repos.在libs-snapshot下,有4个本地快照存储库.这样做的原因是我们从其他地方(非连接)获取所有神器回购的转储,并将其导入该网络.但我们必须修改那里的快照工件的子集.所以我们创建了另一个本地快照仓库,称之为mine-snapshot-local(maven 2 repo,设置为唯一,max artifacts = 1?),并将其添加到libs-snapshot virtual 的顶部.从理论上讲,这将允许我们修改我们需要的少量工件,部署到我们自己的仓库,本地开发人员会选择那些.但是我们仍然可以从其他非连接系统的定期转储中访问99%的其他工件.此外,我们可以批量导入来自同时被修改的其他网络的丢弃,而无需触及我们的独立网络仓库(我的快照本地).我想我们正在"分支"神器回购......

我意识到我们可能只是直接部署到其中一个导入的repos中,但是下次我们从另一个网络获得转储时,所有这些自定义修改的工件都会消失...所以我真的很想让这个方法得到如果可能的话.

从我的本地eclipse中,maven插件显式地将工件部署到mine-snapshot-local repo ,并且没有错误.我看到的问题是虚拟libs-snapshot的maven-metadata.xml没有被更新.该文件的时间戳已更新,如果我使用Web浏览器浏览libs-snapshot/whatever_package,我可以看到新部署的工件,其时间戳比现有快照更新.但maven-metadata.xml文件仍包含指向"较旧"快照的指针.

maven-metadata.xml在mine-snapshot-local repo中成功更新,但就好像artifactory没有正确地将所有元数据文件合并到虚拟仓库中.或者,更有可能的是,我错误配置了某些东西导致它忽略了我们的顶层本地仓库(但为什么快照jar/pom仍会显示在那里?).

我们正在使用artifactory 2.6.1(并且没有升级选项).

我尝试了很多方面:将快照存​​储库设置为唯一的,非唯一的部署程序,限制快照的数量等等.似乎没有任何区别.

我认为可能存在问题的一件事是分配给快照的内部版本号.例如,在导入的repo中,工件的时间戳可能是一周,但是内部版本号为4355.在我的新repo中,当我部署时,我有一个更新的时间戳,但内部版本号为1(或比4355小得多的东西.

我试图拥有这样的多个本地快照存储库,从而咆哮错误的树吗?看起来这应该没问题,但也许不行.

artifactory maven maven-metadata

5
推荐指数
1
解决办法
1285
查看次数

强制maven在部署时更新maven-metadata.xml中的<latest>标记

出于某种原因,maven-metadata.xml文件中的"latest"标记在部署其相应工件的新版本时停止更新.在遍布整个互联网之后,我发现很多人都说Maven在运行其部署插件时会生成/更新此文件,但如果这是真的,那么我的maven版本似乎已经停止更新了最新标签.反正是否有强制maven在构建/部署期间更新标记?

在我的构建期间,我看到这些消息,清楚地表明它正在下载maven-metadata.xml,我假设更新它,然后将其上传回服务器:

Downloading: https://<REPO_SERVER>/<ARTIFACT_PATH>/maven-metadata.xml
Downloaded: https://<REPO_SERVER>/<ARTIFACT_PATH>/maven-metadata.xml (955 B at 3.0 KB/sec)
Uploading: https://<REPO_SERVER>/<ARTIFACT_PATH>/maven-metadata.xml
Uploaded: https://<REPO_SERVER>/<ARTIFACT_PATH>/maven-metadata.xml (989 B at 1.5 KB/sec)
Run Code Online (Sandbox Code Playgroud)

xml nexus maven maven-metadata

5
推荐指数
0
解决办法
941
查看次数

如何要求Maven创建maven-metadata.xml而不是maven-metadata-local.xml?

由于某些原因(不是本文的关注点),Amazon S3并不是Maven存储库的理想主机。所以我要在本地计算机上构建我的Maven应用程序,并在某些时间点上(例如每两天左右),使用aws s3 cp命令将整个层次结构复制到Amazon S3 。说我复制com文件夹,就像:

com
-raysis
--rayProduct
---1.0-SNAPSHOT
----rayray.jar
Run Code Online (Sandbox Code Playgroud)

问题是已创建的元数据文件是maven-metadata-local.xml(因为我已经在本地构建了它,这似乎是合理的),但是当我将其上传到S3并尝试通过maven进行获取时,它抱怨说没有maven-metadata.xml。所以我怎么能强制(或优雅地要求)maven创建maven-metadata.xml代替/与maven-metadata-local.xml一起?由于Maven元数据内部没有特定于位置的数据,因此移动似乎不容易。

注意:我正在尝试从S3加载以下依赖项(我也添加了存储库):

<dependency>
    <groupId>com.raysis</groupId>
    <artifactId>sense-lib</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 maven maven-metadata

5
推荐指数
0
解决办法
915
查看次数

Maven2如何知道在哪里找到插件?

我正在使用Maven2,我似乎无法在我的存储库中找到任何插件.我得到的错误就像

存储库元数据:'org.apache.maven.plugins'在存储库中找不到:myrepo

其中myrepo是我的存储库的名称.

我的问题是Maven如何知道在哪里找到插件?我的错误中有一个对元数据的引用,预期元数据在哪里以及必须采用什么格式?到目前为止,我没有太多运气寻找文件......

(我对使用中央回购的简单答案不感兴趣,我想知道为什么myrepo不工作.)

谢谢!

plugins maven-2 repository maven-metadata

4
推荐指数
1
解决办法
2964
查看次数

如何阻止Maven下载maven-metadata.xml以获取我在repo中已有的工件?

我正在使用Maven 3.2.我在我的pom.xml文件中有这种依赖(一个WAR项目)

            <dependency>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                    <version>1.6.2</version>
                    <scope>provided</scope>
            </dependency>
Run Code Online (Sandbox Code Playgroud)

每当我为我的pom运行任何阶段(例如"mvn install")时,应用程序总是尝试下载有关依赖关系的一些元数据......

Downloading: http://repo.spring.io/milestone/joda-time/joda-time/maven-metadata.xml
Run Code Online (Sandbox Code Playgroud)

我怎么告诉Maven停止这样做?我已经将神器缓存在我当地的Maven回购中.

谢谢, - 戴夫

artifacts maven maven-metadata

4
推荐指数
2
解决办法
4534
查看次数

当您不指定任何插件时,Maven 如何决定使用哪个版本的插件?

我认识到 Maven 并不总是使用最新版本的插件。

例如,org.codehaus.mojo:sonar-maven-plugin2.7 版本已于 10 月 19 日发布,但在 10 月 23 日,Maven ( mvn sonar:sonar)仍在使用 2.6 。

我什至记得一些插件,其中最新版本比 Maven 决定使用的版本高出几个小版本。

是否有任何(中央)索引/列表/数据库,Maven 会在其中查找要使用的版本?如果是,在哪里可以手动访问?

maven-plugin maven maven-central maven-metadata

4
推荐指数
2
解决办法
1334
查看次数

artifactory分类器元数据快照maven 3.0

我的问题很"简单"但直到现在我才找到解决方案:

我有2个项目.

  • 项目A 一个分类(被称为开发或专业版)使用特定配置文件的帮助
  • 项目B 依赖于A(使用classifier dev或pro)

  • 用A分类器(dev)在A上执行安装目标

  • 我用另一个分类器(专业版)重新执行安装目标

然后我编译B项目(我把依赖项放到A,用分类器DEV)

它运作良好.


但是当我对artifactory(目标部署)做同样的事情时,它不起作用 (并且存储库配置为"唯一")

它不起作用,因为神器?maven依赖?正试图下载A与分类器dev 最新时间戳,buildnumber of whatever.

但是这个"逻辑"是错误的,因为最新的时间戳对A分类器pro有效!

我读了本地存储库和artifactory存储库之间的metadata.xml.有类似的(但不完全相同)

我错了什么?多谢你们!

  • Maven版本:3.03
  • Artifactory版本:2.3.4.1

classification artifactory maven maven-metadata

2
推荐指数
1
解决办法
1752
查看次数

Maven 依赖版本不匹配问题 - 从 repo 解决过时的依赖版本

当我尝试在 Eclipse 中构建我的 Maven 项目时,我收到此构建失败消息:

[INFO] Checking for transitive/resolved version mismatches.
[INFO] com.company.etc:artifact-name:
[INFO]     required: 1.5
[INFO]     resolved: 1.3
Run Code Online (Sandbox Code Playgroud)

我的 POM 文件要求此工件的 1.5 版,因此该部分是正确的。但是在列出的存储库中,版本 1.3、1.4 和 1.5 都可用,根目录中也有正确的 maven-metadata.xml 文件。简单地将我的 POM 文件要求更改为旧版本不是一种选择,因为我需要最新版本的工件中的功能。

我真的被这里难住了。有什么我忽略的可能会导致 Maven解析的版本号低于存储库服务器上实际可用的版本号

java eclipse maven maven-metadata

2
推荐指数
1
解决办法
4223
查看次数