问题标签 [maven-publish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
630 浏览

encoding - Gradle 'maven-publish' 插件因“编码不可映射字符”错误而失败

我最近将一个项目从 Maven 迁移到 Gradle(即:用 build.gradle 文件替换了 pom.xml 文件)。由于我的公司仍然有几个依赖它的下游 Maven 项目,我们必须继续将 pom 文件以及类、源和 javadoc JAR 发布到我们的 Nexus 存储库,以便下游项目仍然可以将此项目作为 Maven 依赖项使用。这就是 Gradle 的“maven-publish”插件的用途。这是我的 build.gradle 文件在 maven-publish 插件的配置中的样子:

这将生成一个 Gradle“发布”任务,该任务将生成所需的 pom.xml 文件以及类、源代码和 javadoc JAR。完成后,它会将 jar 发布到“build-test-snapshot”Nexus 存储库。

这在我的机器以及我们的构建服务器和我的大多数同事的机器上都可以正常工作。但是,一些同事一直在抱怨,因为“gradlew publish”命令(请注意,项目中包含了 Gradle 2.4 包装器)在他们身上失败并出现如下错误:

有趣的是,'gradlew build' 命令(使用 javac 编译项目)在每个人的机器上执行得很好。这是 'gradlew publish' 命令在某些机器上存在问题(在 Mac 和 Windows 上通过或失败)。

我不知道这里的关键区别是什么,但我怀疑受影响的用户的 Perforce 客户端配置错误(未指定 P4CHARSET)并且所有项目文件都使用默认编码同步到他们的机器。我不清楚如何检查 Perforce 在同步时使用的编码,所以这只是一个理论。据我了解,即使他们修复了他们的配置,他们仍然需要清除他们的登记并再次从 Perforce 服务器下载所有内容,以获取所有具有正确编码 (utf16le-bom) 的文件。

无论任何 Perforce 问题如何,责任都归咎于我,因为我是第一个将我们切换到 Gradle 的人。如果有某种方法可以配置 maven-publish 插件来解决该问题,那么我更愿意这样做。如果 javac 可以将这些文件中的非标准字符编译成类,那么插件没有理由不能读取它们并为它们生成 javadoc,对吗?也许需要明确告知要使用什么编码?

我已经尝试过使用 JAVA_OPTS 和 GRADLE_OPTS 中的 -Dfile.encoding=x-UTF-16LE-BOM 选项(这没什么区别)。我还发现以下代码片段用于在 Gradle 中指定“编译”任务的编码:

不幸的是,这是针对“编译”任务的,并且该项目已经成功编译。我不确定 maven-publish 插件正在生成什么类型​​的任务,所以我不知道如何将这种方法应用于这些任务(这可能吗?)。

我还能尝试什么让 Gradle maven-publish 插件停止绊倒文件编码?

0 投票
2 回答
592 浏览

gradle - Gradle 在排除所有传递依赖时排除自我

我遇到了一个我无法解决的特定问题,如果有任何帮助,我将不胜感激。最初,我在我的 Java 项目中包含了一些 jar 依赖项作为仅工件依赖项。如下所示:

到目前为止,一切都很好。我们称这个项目为“A”。我已经将项目 A 包含在另一个 Java 项目 B 中,再次使用 gradle。我注意到使用 maven-publish 发布的 A 在 B 中使用它时并没有在其 pom 文件中排除其所有传递依赖项。

所以我开始使用传递标志:

这确保了在项目 B 中,我在使用 eclipse 插件和 gradle 本身时排除了 A 的所有传递部门。

但是,已发布的 pom.xml 中缺少排除的问题仍然存在。然后我发现这个问题似乎在撰写本文时和我的 gradle 版本中已经解决:GRADLE-2945

所以我尝试了以下方法:

根据maven doc ,pom 文件现在正确地具有传递依赖项的所需排除规则:

然而,这会导致一系列不同的问题;当以这种方式包含 A 时,使用 compileJava 任务时 eclipse 和 gradle 本身都不能编译项目 B 中的任何代码。连同它的传递依赖,A 本身也消失了。

奇怪的是,根据依赖项任务,它是编译类路径的一部分。

我正在使用带有 eclipse 4.41 的 JRE7 和 gradle 2.3,我们使用 nexus 作为内部 maven 存储库。

我希望我不需要使用传递标志并通过添加所需的排除来手动操作生成的 pom 文件。


使用 dbcp 作为项目 A 重现问题的示例项目:

主.java:

构建.gradle:

0 投票
3 回答
4653 浏览

java - Maven-publish 不能在 pom 文件上应用 withXML(没有方法签名)

好的,所以我遇到了这里描述的确切问题:

带有 Gradle 的 POM 中缺少 Android 库依赖项

我将提供的答案复制到我的 gradle 文件中,如下所示:

但是,在尝试 publishToMavenLocal 时出现错误,我不确定为什么?

注意:第 136 行是这一行:

0 投票
1 回答
1855 浏览

gradle - Gradle maven-publish 插件自定义工件名称

我正在努力使用 maven-publish 插件将两个文件上传到 Nexus 存储库。问题是我想为其中一个文件设置自己的名称。任务源代码为:

文件已正确上传,但名称与项目名称相同。关键是我希望这两个工件都保留其原始名称。有没有人遇到过类似的问题?我尝试了不同的技巧,但没有效果。

0 投票
2 回答
1203 浏览

gradle - 如何从 Gradle 将 XML 文件发布到 Maven 存储库

我有一个静态 xml 文件,我想使用 maven-publish 插件从 Gradle 发布到 Maven 存储库(我现在的本地 Maven 存储库)。

build.gradle 看起来像这样:

这可行,但我也想添加一个分类器,我应该在哪里定义它? https://docs.gradle.org/current/userguide/publishing_maven.html在第 68.2.2 节中说应该可以这样做:

但后来我得到这个错误:

配置根项目“testapplication”时出现问题。

执行模型规则时抛出异常:org.gradle.api.publish.plugins.PublishingPlugin$Rules#publishing(org.gradle.api.plugins.ExtensionContainer) 没有方法签名:java.io.File.call() 适用于参数类型:(build_101arjzoe908rdkh5aikrn6bt$_run_closure5_closure16_closure19_closure20) 值:[build_101arjzoe908rdkh5aikrn6bt$_run_closure5_closure16_closure19_closure20@2aa7399c] 可能的解决方案:wait(), any(), wait(long), each(groovy.lang.Closure), any( , 列表()

使用以下解决方案将正确添加分类器,但也会将 pom.xml 中的包装从 更改<packaging>xml</packaging><packaging>pom</packaging>。我不想要那个。

0 投票
0 回答
145 浏览

maven - GradlePublishPlugin:如何为原始发布文件添加分类器?

我正在将二进制文件发布到 Apache Archiva 存储库。我可以通过 web 界面添加分类器,但是当涉及到 gradle maven 发布插件的使用时,我只能为 jar 工件添加分类器。

我正在尝试发布一个可执行文件,所以我将它作为文件传递

一切都很好,除了分类器。

0 投票
1 回答
497 浏览

maven - 将 grails3 插件发布到工件 - 生成的 pom 的差异

我正在尝试将 grails 3 插件的快照发布到远程 maven 存储库(Artifactory)。这是我的构建脚本:

当我运行时gradle install- 在本地 m2 存储库中安装插件一切正常,并且 pom 看起来不错,它具有完全相同的范围和版本的依赖项,还提供了在发布到本地存储库期间从 pom 中排除依赖项。当我运行gradle publishMavenJavaPublicationToMyArtifactoryRepositorypom 时看起来很奇怪,gradle 忽略了构建脚本依赖范围中定义的定义,并且总是使用runtime. 举个例子:

之后的pom gradle install

之后的pom gradle publishMavenJavaPublicationToMyArtifactoryRepository

pom aftergradle install也不包含与 scope 的依赖关系providedgradle publishMavenJavaPublicationToMyArtifactoryRepository包含后的 Pom.xml

没有版本,gradle 不喜欢那样。

为什么我会收到如此不同的结果?如何生成与 for 相同的 gradle publishMavenJavaPublicationToMyArtifactoryRepositorypom gradle install。我不喜欢在出版物部分编辑 pom 的机会。非常感谢任何帮助。

0 投票
1 回答
4447 浏览

android - 如何将 .aar 依赖项包含到 Android 库 .aar 文件中

我写了一些库,其中有一部分 UI。此外,这个库使用另一个库。我想提供版本以在任何应用程序.aar中使用这部分 UI 。

我的图书馆有下一个依赖:

当我构建.aar一切都很好,但是当我将它.aar包含到另一个应用程序中时,我遇到了下一个问题:

1)。 ./gradlew clean build

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

/home/user/projects/MainApp/app/build/intermediates/exploded-aar/com.my.sdk/SDK/0.0.1/res/values/values.xml:78:21-29:找不到匹配的资源给定名称:attr 'fontPath'。

:app:processDebugResources 失败

解决方案非常简单 - 添加到MainApp/app/build.gradle下一行:

compile 'uk.co.chrisjenx:calligraphy:2.1.0'

2)。当我运行MainApp得到这个错误:

java.lang.NoClassDefFoundError: com.my.sdk.ui.fragment.DialogAppNotInstalledFragment

为了解决这个问题,我需要添加compile 'com.inthecheesefactory.thecheeselibrary:stated-fragment-support-v4:0.10.0'MainApp/app/build.gradle.

与其他依赖项相同。

结果,我只需copy-paste要从我的library项目到MainApp项目的所有依赖项。

是否可以library aar包含所有必需的依赖项?

build.gradle图书馆:

MainApp/app/build.gradle

更新

生成的POM文件:

0 投票
2 回答
4982 浏览

maven - 如何将依赖项从 build.gradle 导入 pom.xml

我使用maven-publish插件来部署 android 库(.aar)。

我的库有另一个依赖项,它们也是.aar

如何从build.gradle,dependencies部分导入所有依赖项:

到生成的pom.xml dependencies部分:

我找到了一些解释如何做类似的事情:

Maven 库的可选 Gradle 依赖项

如何将工件运行时范围更改为编译范围?

https://issues.gradle.org/browse/GRADLE-1749

http://www.scriptscoop.net/t/6ac07fb41846/how-to-maven-publish-a-gradle-project-jar-with-provided-scope.html

所以,我明白,我应该使用,从范围pom.withXml导入所有依赖项,并将其放入project.configurations.compile.allDependenciescompileasNode().dependencies

但我不熟悉它,我认为我做错了什么。这是我当前的代码:

0 投票
1 回答
8764 浏览

gradle - 无法在 gradle maven-publish 插件中传输工件 pom

我使用 gradle (2.9) maven-publish插件将文件发布到私有nexus maven repo。build.gradle 文件是

kar 文件已正确上传,并且在 nexus 中我可以看到预期的 xml 描述符:

但不幸的是,在执行publish任务期间,我收到以下错误:

我该如何解决这个错误?