【问题标题】:how to set archiveBaseName for local .m2 repository如何为本地 .m2 存储库设置 archiveBaseName
【发布时间】:2019-12-04 05:56:13
【问题描述】:

我正在尝试将依赖项升级到一个项目,该项目最终将成为我项目的依赖项。我已经进行了升级,我想在将其发布到要使用的存储库之前在本地对其进行测试。我正在学习 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?


新信息:

为我们的 jeromq 项目构建 gradle.build

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 dependencies alias


    【解决方案1】:

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

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

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

    如果它是 Gradle 构建,您将使用复合构建,它通过“子构建”的构建输出有效地替换声明的二进制依赖项。但公平地说,这只适用于 Gradle 构建。

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

    【讨论】:

    • 终于!经过大量研究,我了解您的解决方案(mvn install)是正确的。你是对的,我走得太远了。我在学。谢谢。
    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 2016-09-03
    • 2012-04-07
    • 2014-07-07
    • 2018-02-06
    • 2013-11-19
    • 2013-06-06
    • 2020-12-05
    相关资源
    最近更新 更多