192

Gradle でビルドされたアーティファクトを Maven リポジトリにデプロイしようとしていますが、そのための資格情報を指定する必要があります。これは今のところうまくいきます:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/snapshots/") {
                authentication(userName: "admin", password: "admin123")
            }
        }
    }
}

しかし、資格情報をソース管理に保存する必要はありません。Maven では、サーバー構成を定義し、資格情報を my.xml に割り当てます~/.m2/settings.xml。Gradleで同様のことを行うにはどうすればよいですか?

4

8 に答える 8

264

~/.gradle/gradle.properties :

mavenUser=admin
mavenPassword=admin123

build.gradle :

...
authentication(userName: mavenUser, password: mavenPassword)
于 2012-10-05T18:02:26.467 に答える
123

最初の回答は引き続き有効ですが、API は過去に変更されています。私の編集は受け入れられなかったので、別の回答として投稿します。

このメソッドauthentication()は、認証方法 (Basic など) を提供するためにのみ使用され、資格情報は提供されません。

また、失敗時に資格情報をプレーンに出力するため、使用しないでください。

これは彼があなたの中でどのように見えるべきかですbuild.gradle

    maven {
        credentials {
            username "$mavenUser"
            password "$mavenPassword"
        }
        url 'https://maven.yourcorp.net/'
   }

gradle.propertiesユーザーホームのディレクトリに次のように入力します。

mavenUser=admin
mavenPassword=admin123

また、GRADLE_USER_HOMEが設定されていないことを確認して~/.gradleください。そうしないと、そこにあるプロパティ ファイルが解決されません。

以下も参照してください。

https://docs.gradle.org/current/userguide/build_environment.html

https://docs.gradle.org/current/userguide/dependency_management.html (23.6.4.1)

于 2016-02-25T13:00:38.710 に答える
26

ユーザー固有の資格情報がある場合 (つまり、各開発者が異なるユーザー名/パスワードを持っている可能性がある場合)、gradle-properties-pluginを使用することをお勧めします。

  1. デフォルトを入れるgradle.properties
  2. 各開発者はgradle-local.properties(これは git を無視する必要があります) でオーバーライドします。

$USER_HOME/.gradle/gradle.properties異なるプロジェクトが同じプロパティ名を持つ可能性があるため、これは using をオーバーライドするよりも優れています。

プラグインは実際にgradle-${environment}.propertiesのデフォルトが である場所を${environment}追加し、local追加機能を持っていることに注意してください。使用する前にリンクをお読みください。

于 2015-12-29T08:47:21.593 に答える
19

を使用して、コマンド ラインで変数を指定することもできます-PmavenUser=user -PmavenPassword=password

これは、何らかの理由で gradle.properties ファイルを使用できない場合に役立つ場合があります。たとえば、ビルド サーバーではオプションを指定して Gradle を使用している-gため、各ビルド プランには独自のGRADLE_HOME.

于 2014-12-16T16:25:50.007 に答える
10

資格情報をプロパティ ファイルに入れ、次のような方法で読み取ることができます。

Properties props = new Properties() 
props.load(new FileInputStream("yourPath/credentials.properties")) 
project.setProperty('props', props)

もう 1 つの方法は、OS レベルで環境変数を定義し、次を使用してそれらを読み取ることです。

System.getenv()['YOUR_ENV_VARIABLE']
于 2012-10-05T17:13:37.050 に答える
6

MacOS でビルドしていて、パスワードをマシンに平文で残しておきたくない場合は、キーチェーン ツールを使用して資格情報を保存し、それをビルドに挿入できます。クレジットは Viktor Eriksson に送られます。 https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/

于 2018-06-25T22:16:58.160 に答える
0

build.gradle

apply from: "./build.gradle.local"
... 
authentication(userName: project.ext.mavenUserName, password: project.ext.mavenPassword)

build.gradle.local (git は無視)

project.ext.mavenUserName=admin
project.ext.mavenPassword=admin123
于 2021-04-17T13:35:00.797 に答える