2017-05-10 16 views
0

私はgradle v3.4を使用していて、(project.extに渡された)secrets.propertiesファイルからプロパティを取り込みましたが、資格情報セクションで変数を使用するとエラーが発生します文字列の補間が正しく動作していないと私は信じさせる認証の問題について準拠しているネクサスから。資格セクションの直前に変数値を出力することができます。maven-publish経由でgradleで資格情報を設定する

build.gradle

 maven { 
      credentials { 
println(project.nexusUsername) //prints the value 
       username '${project.nexusUsername}' 
       password '${project.nexusPassword}' 
      } 
      if (project.version.endsWith("-SNAPSHOT")) { 
       url "http://nexus.somewhere.com/repository/some-java-snapshot/" 
      } else { 
       url "http://nexus.somewhere.com/repository/some-java-release/" 
      } 
     } 

更新 私は(単一ではない)、二重引用符を使用するには、上記の資格情報のセクションを更新したが、それは問題を解決していませんでした。一重引用符は文字列リテラルです - 文字列補間が必要な場合は、groovyで二重引用符を使用する必要があります。

+0

一重引用符を二重引用符に変更しましたが、問題はそのまま続きます。 –

答えて

0

を。私はプロパティファイルの文字列値に二重引用符を使用していましたが、その結果、認証に失敗しました。外部プロパティファイルから二重引用符を削除すると、Nexusに公開することができました。

不適切な外部特性は、設定ファイル

someUsername="someuser" 

正しい外部プロパティを設定ファイル

someUsername=someuser 

build.gradle

publishing { 
    publications { 
     shadow(MavenPublication) { 
      from components.shadow 
      groupId project.group 
      artifactId project.artifactId 
     } 
    } 
    repositories { 
     maven { 
      credentials { 
       username project.someUsername 
       password project.somePassword 
      } 
      if (project.version.endsWith("-SNAPSHOT")) { 
       url project.someSnapshot 
      } else { 
       url project.someRelease 
      } 
     } 
    } 
} 

この作品 - うまくいけば、これは動作します。

1

単一引用符は、可変拡張のない文字列リテラルを示します。

username project.nexusUsername password project.nexusPassword

リファレンス使用してください:問題は、プロパティは、外部プロパティファイルで指定された方法だったhttp://docs.groovy-lang.org/latest/html/documentation/#_single_quoted_string

+0

はこれを以前にも試みました。うまくいきませんでした。 –

+0

文字列補間の問題はほとんどありません。 '' mvn deploy:deploy-file'''は与えられたurl-sとcredsで動作しますか? – patrungel

+0

私は実際の値で変数を切り替えることができ、うまく動作します。実際には動作していないbuild.gradleファイル内の実際の文字列値を使用しないようにしてください。私は何か間違っていると仮定していますが、さらにデバッグする方法を理解する必要があります –

関連する問題