如何为本地 .m2 存储库设置 archiveBaseName

how to set archiveBaseName for local .m2 repository

我正在尝试将依赖项升级到最终将成为我的项目的依赖项的项目。我已经进行了升级,我想先在本地进行测试,然后再将其发布到要使用的存储库中。我正在学习 Gradle,一些 Google 搜索向我展示了如何将项目添加到 settings.gradle 文件。但是依赖项项目为其依赖项使用别名(请参阅下面的 build.gradle)。

settings.gradle

include ':TransportImpl'

更改为:

include ':TransportImpl', ':jeromq'
project(':jeromq').projectDir = new File("../zeromq/jeromq")

build.gradle

//project.ext.set("JEROMQ", 'THIRD-PARTY:jeromq:0.4.2')
project.ext.set("JEROMQ", ':jeromq')

如果我取消注释原始行(如上所示),因为该 apk 在 repo 中,它会被识别。我猜这只适用于外部库。

我尝试过的其他事情:

//project.ext.set("JEROMQ", 'C:/Users/username/.m2/repository/THIRD_PARTY/jeromq/0.5.1-SNAPSHOT/jeromq-0.5.1-SNAPSHOT-jeromq.jar')
//project.ext.set("JEROMQ", 'C:\Users\username\.m2\repository\THIRD_PARTY\jeromq\0.5.1\jeromq-0.5.1-jeromq.jar')
//implementation filetree(dir: 'C:\Users\username\.m2\repository\THIRD_PARTY\jeromq\0.5.1', include:['jeromq-0.5.1-jeromq.jar'])

任何人都可以告诉我如何分配指向本地存储库的变量并使用该变量设置 archiveBaseName 吗?


新信息:

gradle.build 用于我们的 jeromq 项目

apply plugin : 'maven'
apply plugin : 'maven-publish'

// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext {
    // Nexus paths
    nexusUrl='https://nexus.path'
    Releases='/Private_Releases'

    nexusUsername = project.findProperty("nexusUsername") ?: (System.getenv("NEXUS_USERNAME") ?: "user_name"
    nexusPassword = project.findProperty("nexusPassword") ?: (System.getenv("NEXUS_PASSWORD") ?: "password")

    // Project versions
    jeromqVersion = "0.5.1-SNAPSHOT"
}

allprojects {
    // Read only repositories for dependencies; this should never be used to publish
    repositories {
        mavenCentral()
        jcenter()
    }
}

将它用作依赖项的项目使用其 build.gradle 文件中的以下内容找到它:

// Create aliases for dependencies
project.ext.set("EASY_MOCK", 'Test:easymock:3.5.1')
project.ext.set("OBJENESIS", 'Test:objenesis:2.6')
// **************** HERE ***************************
// THIRD-PARTY is configured to look on the nexus server
project.ext.set("JEROMQ", 'THIRD-PARTY:jeromq:0.4.2') ... or 0.5.1 or 0.5.1-SNAPSHOT ...

allprojects {
  // Read only repositories for dependencies; this should never be used to publish
  repositories {
    mavenCentral()
    mavenLocal()
//      maven {
//          // trying to add my local repo, 
//          // BUT this still does not change where THIRD-PARTY is pointing to
//          url 'file://C:/Users/me/.m2/repository/THIRD_PARTY/jeromq/0.5.1-SNAPSHOT/jeromq-0.5.1-SNAPSHOT-jeromq.jar'
//      }
    maven {
      name 'ReleasesName'
      url "$nexusUrl$ReleasesName
      }
    }
    maven {
      name 'ReleasesNameSnapshots'
      url "$nexusUrl$ReleasesNameSnapshots"

      credentials {
        username "${rootProject.ext.nexusReadOnlyUsername}"
        password "${rootProject.ext.nexusReadOnlyPassword}"
      }
    }
    jcenter {
      url "https://jcenter.bintray.com/"
    }
  }

我需要该依赖项的别名的唯一原因是它在其他地方使用。

我不完全确定你在问什么,但我认为你正在尝试的完全不对。

您尝试包含的构建是 Maven 构建,而不是 Gradle 构建,因此您不太可能将其简单地视为 Gradle 构建。

即使它是 Gradle 构建,像您那样包含它也不是正确的方法。你如何尝试它是为了包括多项目构建的多个项目,不包括外部库。

如果它是 Gradle 构建,您将使用复合构建,它有效地用 "sub-build" 的构建输出替换声明的二进制依赖项。但事实上,这只适用于 Gradle 构建。

为什么不直接 mvn install 修改后的 jeromq 版本,将 mavenLocal() 添加到依赖项中并依赖刚刚安装的版本?这将是在本地测试新 Maven 构建依赖项的常用方法。