gpt4 book ai didi

java - 使用 Gradle 将 .jar 发布到私有(private) Maven

转载 作者:行者123 更新时间:2023-11-30 07:28:54 28 4
gpt4 key购买 nike

我正在将 Grails 插件(最终是 .jar)发布到私有(private) Maven 存储库,导致出现以下错误。我已多次确认凭据有效。

似乎根本没有发送凭据(未经授权 401):

Could not transfer artifact com.blah.plugins:blahCommonPlugin:pom:0.1 from/to remote (http://maven.blah.com): Could not write to resource 'com/blah/plugins/blahCommonPlugin/0.1/blahCommonPlugin-0.1.pom'
:publishMavenJavaPublicationToBlahRepository FAILED
:publishMavenJavaPublicationToBlahRepository (Thread[Daemon worker,5,main]) completed. Took 2.788 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':publishMavenJavaPublicationToBlahRepository'.
> Failed to publish publication 'mavenJava' to repository 'blah'
> Failed to deploy artifacts: Could not transfer artifact com.blah.plugins:blahCommonPlugin:jar:0.1 from/to remote (http://maven.blah.com): Could not write to resource 'com/blah/plugins/blahCommonPlugin/0.1/blahCommonPlugin-0.1.jar'

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Total time: 5.634 secs
Stopped 0 compiler daemon(s).
Could not PUT 'http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1/blahCommonPlugin-0.1.jar'. Received status code 401 from server: Unauthorized

在我的 build.gradle 中,我有以下内容(仅相关部分):

version "0.1"
group "com.blah.plugins"

publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}

repositories {
maven {
name "blah"
url "http://maven.blah.com"
}
}
}

//Not sure if I need this
grailsPublish {
repo = 'blah'
githubSlug = 'blah/blahCommonPlugin'
title = "blahCommonPlugin"
desc = "blahcommon plugin"
developers = [erikahlswede:"Erik Ahlswede"]
}

然后我在我的settings.xml (~/.m2/settings.xml) 中有这个

<settings>
<servers>
<server>
<id>blah</id>
<username>un</username>
<password>pass</password>
</server>
</servers>
</settings>

知道我可能会错过什么吗?

编辑 1

我暂时删除了 settings.xml 进行调试。我正在使用:

repositories {
maven {
name "snapshots"
url "http://maven.blah.com/"
credentials {
username 'blahUser'
password 'blahPassword'
}
authentication {
basic(BasicAuthentication)
digest(DigestAuthentication)
}
}
}

通过详细输出,我看到:

Using Credentials [username: blahUser] for authenticating against 'null:-1' using Digest
Using Credentials [username: blahUser] for authenticating against 'null:-1' using Basic

以下是相关日志的其余部分:

Publishing to repository org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@457d1e38
Using Credentials [username: blahUser] for authenticating against 'null:-1' using Digest
Using Credentials [username: blahUser] for authenticating against 'null:-1' using Basic
Deploying to http://maven.blah.com/
Downloading: com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/maven-metadata.xml from repository remote at http://maven.blah.com/
Constructing external resource: http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/maven-metadata.xml
Performing HTTP GET: http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/maven-metadata.xml
Connection request: [route: {}->http://maven.blah.com][total kept alive: 0; route allocated: 0 of 5; total allocated: 0 of 10]
Connection leased: [id: 0][route: {}->http://maven.blah.com][total kept alive: 0; route allocated: 1 of 5; total allocated: 1 of 10]
Connecting to maven.blah.com:80
CookieSpec selected: best-match
Auth cache not set in the context
Target auth state: UNCHALLENGED
Proxy auth state: UNCHALLENGED
Attempt 1 to execute request
Sending request: GET /com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/maven-metadata.xml HTTP/1.1
Receiving response: HTTP/1.1 404 Not Found
Connection can be kept alive indefinitely
Connection [id: 0][route: {}->http://maven.blah.com] can be kept alive indefinitely
Connection released: [id: 0][route: {}->http://maven.blah.com][total kept alive: 1; route allocated: 1 of 5; total allocated: 1 of 10]
Resource missing. [HTTP GET: http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/maven-metadata.xml]
Could not find metadata com.blah.plugins:blahCommonPlugin:0.1-SNAPSHOT/maven-metadata.xml in remote (http://maven.blah.com/)
Uploading: com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/blahCommonPlugin-0.1-20160405.174228-1.jar to repository remote at http://maven.blah.com/
Attempting to put resource http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/blahCommonPlugin-0.1-20160405.174228-1.jar.
Upload http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/blahCommonPlugin-0.1-20160405.174228-1.jar
Performing HTTP PUT: http://maven.blah.com/com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/blahCommonPlugin-0.1-20160405.174228-1.jar
Connection request: [route: {}->http://maven.blah.com][total kept alive: 1; route allocated: 1 of 5; total allocated: 1 of 10]
Connection leased: [id: 0][route: {}->http://maven.blah.com][total kept alive: 0; route allocated: 1 of 5; total allocated: 1 of 10]
Stale connection check
CookieSpec selected: best-match
Auth cache not set in the context
Target auth state: UNCHALLENGED
Proxy auth state: UNCHALLENGED
Attempt 1 to execute request
Sending request: PUT /com/blah/plugins/blahCommonPlugin/0.1-SNAPSHOT/blahCommonPlugin-0.1-20160405.174228-1.jar HTTP/1.1
Receiving response: HTTP/1.1 401 Unauthorized
Connection can be kept alive indefinitely
Authentication required
maven.blah.com:80 requested authentication
Authorization challenge processed
Authentication failed

编辑2

尝试仅 curl 请求...似乎不起作用:

$ curl --basic -u username:password http://maven.blah.com/com/blah/plugins/blahCommonPlugin/test/api-1.0-20160128.114425-1.jar --request PUT --data blahCommonPlugin-0.1-SNAPSHOT.jar
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.6.3</center>
</body>
</html>

我找到了我们的maven服务器的nginx配置。不确定这是否配置正确。这看起来还好吗?:

# Allow only these methods (GET and HEAD are allowed by default)
dav_methods PUT MKCOL;
dav_access user:rw group:rw all:r;
create_full_put_path on;
...
# For all plugins and directories
location / {
# Allow files listing for repositories
autoindex on;

limit_except PUT MKCOL {
# For GET and HEAD request use this file for username/password who have only download permissions from Maven server
auth_basic_user_file /etc/nginx/.htpasswd/downloaders;
}
}

最佳答案

这就是我们处理使用凭据发布到 Maven 存储库的方式:

apply plugin: 'maven'

uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://repo"){
authentication(userName: "yankee", password: "doodle")
}
snapshotRepository(url: "http://repo-snapshotRepository"){
authentication(userName: "yankee", password: "doodle")
}
}
}
}

更多详细信息可以在这里找到: https://docs.gradle.org/current/userguide/maven_plugin.html

关于java - 使用 Gradle 将 .jar 发布到私有(private) Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432765/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com