相关疑难解决方法(0)

使用持续集成在Gradle中发布快照与发布版本

我正在学习Gradle,来自Ant + Ivy和Maven背景,我正试图围绕正确的方式来使用gradle发布我的软件的发布版本.我还需要不断地集成我的项目,而不必不断发布独立的工件.

Ant +常春藤

在Ant + Ivy世界中,我可以创建publishSnapshot和publishRelease目标.这些可以使用不同的常春藤解析器来解析和发布到我在Nexus中的单独快照或发布存储库.

Maven的

使用Maven,我可以定义一个snapshotRepositoryrepository在我的distributionManagement部分中将maven发布到我的单独快照或在Nexus中发布存储库.

摇篮

现在输入gradle.我怎样才能实现同样的功能?我正在使用常春藤风格的存储库.

感谢您提供的任何见解.

回答

感谢René在下面的回答,我终于能够创建一个可行的解决方案.问题的关键在于我需要不断整合我的所有项目.为此,我认为使用版本号声明依赖latest.integration是获取最新版本库的唯一方法,因此我需要使用常春藤样式存储库.

实际上,还有其他方法可以引入最新版本的库,以便在所有项目中不断集成我的软件.解决的办法是使用uploadArchives完全一样勒列出以下(也请注意,您将需要apply plugin: 'maven'为此工作.确保你的资料库也Maven的风格,并宣布的依赖时,您可以使用动态版本号如图所示这里.在我的情况是,我在common.gradle和下游项目中列出了一个全局版本号,我曾经version: version引用过全局版本变量.这样,我系统中的每个工件都有相同的版本.当它需要发布时,我可以将此值从1.0-SNAPSHOT更改为1.0并按顺序构建每个.

nexus dependency-management gradle

33
推荐指数
2
解决办法
3万
查看次数

Gradle:查找使用+导入的依赖项的已解析版本

我想dependency在gradle中打印最后一个版本.

我以这种方式添加了我的依赖:

compile 'test:test:+'
Run Code Online (Sandbox Code Playgroud)

现在我想打印我的依赖版本,因为我想知道我正在使用哪个版本.

我正在以这种方式使用它:

gradle dependencyInsight --configuration compile --dependency test:test
Run Code Online (Sandbox Code Playgroud)

但我的输出是这样的:

+--- test:test:+ -> project : (*)
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以得到我的依赖的真实版本,而不是+

java android build-tools gradle android-gradle-plugin

20
推荐指数
3
解决办法
3551
查看次数

Gradle无法使用版本RELEASE找到Maven父依赖项

我有一个带有pom.xml的"项目B",如下所示:

<parent>
    <groupId>org.company</groupId>
    <artifactId>projectA</artifactId>
    <version>RELEASE</version>
</parent>

<artifactId>projectB</artifactId>
<version>0.0.1</version>
Run Code Online (Sandbox Code Playgroud)

其中"项目B"将"项目A"作为父项目pom.

我正在尝试使用gradle创建一个新的"项目C",如果我想使用"项目B"作为依赖项,我指定build.gradle如下:

repositories {
    maven {
         url "http://mycompany:8081/artifactory/repository"
    }
}

dependencies {
    compile group: 'org.company', name: 'projectB', version: '0.0.1'
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法解析org.company:projectB:0.0.1.

无法解析POM http:// company:8081/artifactory/repository/org/company/projectB/0.0.1/projectB-0.0.1.pom

找不到org.company:projectA:RELEASE.

从设置我的projectA版本号到特定的版本号,有没有办法让这个版本与gradle一起工作?

有没有办法让gradle找到像maven正在做的正确版本?我的其他maven项目找到正确的版本没有问题.

我不想得到项目A的最新版本,也许下载完整的项目B jar就足够了.

PD我在本地计算机上使用gradle版本4.5和maven版本3.5.2

gradle maven build-dependencies

11
推荐指数
1
解决办法
582
查看次数

如何使用Gradle的动态版本并避免Beta版?

我在build.gradle上有这个:

testCompile(group: 'junit', name: 'junit', version: '4.+')
Run Code Online (Sandbox Code Playgroud)

决议为:

junit:junit:4.+ -> 4.12-beta-1
Run Code Online (Sandbox Code Playgroud)

我不想使用beta版本,但同时我想使用动态版本。在这种情况下,我想依靠4.11。

可能吗?怎么样?

注意:Maven“版本”插件-如何从响应中排除alpha / beta版本?有一个Maven的答案,但我不确定如何在Gradle中翻译。

junit gradle maven

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

我在哪里可以找到 gradle 依赖项?

我正在尝试在 Eclipse 中学习 Gradle。

是否有任何很好的集成,您可以在其中搜索要包含在项目中的 Jar?

现在,这是我这边的一次偶然性操作。

例子:

我想从 Apache Commons 添加 CLI 库。还有编解码器库。

我像这样添加了 jcenter() 和 mavenCentral:

repositories {
    jcenter()
    mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

我在依赖项部分尝试过这个(和变体):

compile 'org.apache.commons:cli:1.2'
compile 'org.apache.commons:codec:1.10'
Run Code Online (Sandbox Code Playgroud)

但我得到的只是

Could not resolve: org.apache.commons:cli:1.2
Could not resolve: org.apache.commons:codec:1.10
Run Code Online (Sandbox Code Playgroud)

在 search.maven.org 中搜索时,如果我在 org.apache.commons 上搜索,我会得到 111 页的点击量……我还没有找到时间逐一浏览它们。

在搜索 commons-cli 时,它找到了 2005 年的版本...加上一个名为的库

org.mod4j.org.apache.commons cli
Run Code Online (Sandbox Code Playgroud)

不知道“mod4”是什么意思。

结论是这些存储库中不存在 Apache 公共资源吗?

在这些情况下你是怎么做的?您如何提出正确的“编译”规范?

例如,我可以说“获取此 jar 的最新版本”吗?

很想有办法做到:

gradle search apache-commons --only-latest-version
Run Code Online (Sandbox Code Playgroud)

或类似的东西。类似于 Ruby 中美妙的 GEM/BUNDLE 命令。

感谢所有帮助

eclipse gradle

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

如何从初始化脚本中应用Gradle版本插件?

我正在尝试进行设置,以便可以使用Gradle版本插件,而不必将其添加到我的所有build.gradle文件中。

基于对相关问题的回答,我尝试创建一个文件~/.gradle/init.d/50-ben-manes-versions.gradle

initscript {
    repositories {
       jcenter()
    }

    dependencies {
        classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
    }
}

allprojects {
    apply plugin: com.github.ben-manes.versions
}
Run Code Online (Sandbox Code Playgroud)

如果然后尝试./gradlew dependencyUpdates在回购中调用,则会得到:

FAILURE: Build failed with an exception.

* Where:
Initialization script '~/.gradle/init.d/50-ben-manes-versions.gradle' line: 13

* What went wrong:
Could not get unknown property 'com' for root project 'project-name' of type org.gradle.api.Project.
Run Code Online (Sandbox Code Playgroud)

这个答案说不要在插件名称周围使用引号,但是由于这样不起作用,我尝试添加引号(即:)apply plugin: 'com.github.ben-manes.versions'。这样我得到:

FAILURE: Build failed with an exception.

* Where:
Initialization script '~/.gradle/init.d/50-ben-manes-versions.gradle' line: 13 …
Run Code Online (Sandbox Code Playgroud)

gradle

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