我有这个gradle脚本:
def configureUploadArtifacts(groupId, repoUrl, _packaging) {
    def gpgKeyId = System.getenv('GPG_KEY_ID')
    def gpgPassword = System.getenv('GPG_KEY_PASSWORD')
    def gpgFile = System.getenv('PATH_TO_GPG_FILE')
    project.group = groupId;
    project.archivesBaseName = name
    project.version = getVersionNameFromFile()
    ext."signing.keyId" = gpgKeyId
    ext."signing.password" = gpgPassword
    ext."signing.secretKeyRingFile" = gpgFile
    uploadArchives {
        apply plugin: 'maven'
        apply plugin: 'signing'
        signing {
            sign configurations.archives
        }
        def userName = System.getenv('OSSRH_USER_NAME');
        def password = System.getenv('OSSRH_PASSWORD');
        repositories {
            mavenDeployer {
                beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
                repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                    authentication(userName: userName, password: password)
                }
                snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                    authentication(userName: …在 Maven 中心,我可以看到其他几个可用于某些库的存储库。例如 - Apache Common BeanUtils 在 Central、Redhat GA、JBoss 3rd-party 等中可用。库名称也会更改。例如,Maven CCentral 具有 1.9.4 等版本,而 Redhat GA 具有 1.9.3.redhat-1 等版本。
单击此 URI 可查看详细信息。 https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils
我的问题是 - 标记为 Central 的 Repo 和“Redhat GA”之间有什么区别?
我正在尝试使用 Gradle 从 Maven Central 下载我新发布的依赖项:
repositories {
  mavenCentral()
}
dependencies {
  implementation 'io.github.iltotore:ec-client_2.13:1.0-fixed'
}
尝试构建时,出现错误:
Could not find io.github.iltotore:core:1.0-fixed.
Required by:
    project : > io.github.iltotore:ec-client_2.13:1.0-fixed
但是 io.github.iltotore:core:1.0-fixed 不在 lib 的 pom 中,我的朋友可以毫无错误地使用它。
为了解决这个问题,我尝试了:
跑步 gradlew build --refresh-dependency
删除 ~/.gradle/ 中的缓存
使用 Intellij IDEA 使缓存失效
删除我的本地Maven
但这个问题仍然存在。
我将 Gradle 6.5 与 Intellij IDEA 2020.1.2 一起使用。
我们的 Android 项目是一个 monorepo,包含几个应用程序模块,甚至更多的库模块。其中一个库应该可供其他开发人员访问,因此我们决定将其部署在 MavenCentral 上。我们称之为图书馆吧L。然而,该库还包含 monorepo 内对另一个模块的依赖关系(我们称之为 module m)。为了测试L其他开发人员是否可以正确访问该库,我们创建了一个演示Android项目。但是,当尝试包含发布库的依赖项时L,通常一切都很好,只是m在演示 Android 项目中无法解析该模块。
可以理解的是,该模块m无法解析,因为它既不能在 MavenCentral 上使用,也不能作为 AAR 文件使用。我们无法发布该模块m,因为它不应该可供其他人获取,但将其作为 AAR 文件包含也不起作用。终端抛出错误:
构建 AAR 时不支持直接本地 .aar 文件依赖项。生成的 AAR 将被破坏,因为任何本地 .aar 文件依赖项中的类和 Android 资源都不会打包在生成的 AAR 中。在这种情况下,以前版本的 Android Gradle 插件也会产生损坏的 AAR(尽管不会抛出此错误)。
所以问题来了 - 一个包含无法公开的子模块的项目如何发布到存储库mavenCentral?
我希望使用 Ivy 从 Maven Central 获取 JavaFX。
这可以获取 Java 依赖项,但不能获取本机依赖项。
预期的:
javafx-graphics-21.0.1.jarjavafx-graphics-21.0.1-linux.jar实际的:
javafx-graphics-21.0.1.jarjavafx-graphics-21.0.1-linux.jar我如何获取原生组件?
ivy.xml
<ivy-module version="2.0" xmlns:m="https://ant.apache.org/ivy/maven">
    <info organisation="org.my" module="my-proj"/>
    <dependencies>
        <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" />
    </dependencies>
</ivy-module>
ivy && ls ~/.ivy2/cache/org.openjfx/javafx-graphics/jars
# javafx-graphics-21.0.1.jar
这是POM:https://repo1.maven.org/maven2/org/openjfx/javafx/20.0.1/javafx-20.0.1.pom
相关:如何使 Maven 在 linux 上请求正确的 javafx 依赖项
我添加maven-2标签是因为Ivy 使用 Maven 2 存储库:
在没有特定设置的情况下,Ivy 使用 Maven 2 存储库来解析您在 Ivy 文件中声明的依赖项。
我们有一个用于缓存的本地神器存储库设置.它在我们的项目中配置,但是当我查看构建过程的stdout时,我看到这样的行
Downloading: http://ourserver/artifactory/our-repo/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloading: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloaded: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar (25 KB at 54.5 KB/sec)
所以看起来它试图从本地存储库和Maven Central下载jar然后实际使用Maven Central.
如果我在浏览器中复制本地存储库的URL,我会毫无问题地获得jar.
如果我检查神器的管理应用程序,我可以看到人工制品.
任何人都可以解释为什么使用Maven Central吗?
更新:发生了什么以及我做了什么:
orien的答案解释了为什么Maven Central被访问了.
mliebelt评论暗示我对我的解决方案:看起来我们的本地存储库在必须首先下载工件时才会缓慢回答.我将缓存配置为在请求pom时急切地下载jar和源.这应该减少从其他地方下载的工件数量.
我正在尝试使用Maven中央API为最新版本的工件提供动态下载链接.虽然这适用于普通的jar,但我似乎无法将其链接到工件的'jar-with-dependencies'版本.
使用该com.ning:nagios工件,可以下载最新版本
我假设我可以使用l查询参数(基于链接的API)来指定'jar-with-dependencies'分类器,但链接只下载普通的jar.
有没有办法链接到这个版本的工件?
我认识到 Maven 并不总是使用最新版本的插件。
例如,org.codehaus.mojo:sonar-maven-plugin2.7 版本已于 10 月 19 日发布,但在 10 月 23 日,Maven ( mvn sonar:sonar)仍在使用 2.6 。
我什至记得一些插件,其中最新版本比 Maven 决定使用的版本高出几个小版本。
是否有任何(中央)索引/列表/数据库,Maven 会在其中查找要使用的版本?如果是,在哪里可以手动访问?
我有这个小模块,它只包含一些属性文件。属性文件驻留在项目的根目录中,需要留在那里。而已。当通过 sonatype 上传到 Maven 中心时,javadoc jar 是强制性的,所以我必须创建一个。
所以我没有 src/main/java 或 src/main/resources。我该怎么做?
javadoc 插件没有为此提供任何选项。
对于源 jar,同样如此。Sonatype 至少需要一个源 jar 的存在,即使它是空的......
迄今为止(2018 年 12 月),我无法在互联网上找到可行的解决方案。
maven-central ×10
maven ×5
gradle ×3
java ×2
aar ×1
android ×1
artifact ×1
artifactory ×1
ivy ×1
javadoc ×1
javafx ×1
maven-2 ×1
maven-plugin ×1
multi-module ×1
nexus ×1
redhat ×1
sonatype ×1
staging ×1