2016-07-28 3 views
1

申し訳ありませんが、これは愚かな質問と思われる場合。しかし、私はJavaとGradleの初心者です。私は時には「Gradle Docs」にこの問題を抱えていることがあります。カスタムスタンドアロンのgradleプラグインは、通常のbuild.gradleコードほど強力ではありませんか?

プロジェクトのbuild.gradleファイルからコードを再利用する簡単な方法を探したいだけです。だから私の会社のレポにアップロードされ、バージョン管理されたプラグインにこのコードを梱包するのが理想的だったようです。しかし、これらのスタンドアロンプ​​ラグインは、gradle DSLとは異なる構文を持つjava/groovyprojects/programsです。だから彼らはgradle.buildファイルと同じ可能性とクロージャを容易にしません。例えば

私はこのように見て、再利用できるようにリポジトリの閉鎖を望んでいた場合:

repositories { 
maven { 
    url project.Repo_GP_Internal 
    credentials { 
     username project.Repo_GP_User 
     } 
    } 
} 

またはuploadArchives閉鎖:

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: Repo_Upload_Internal){ 
       authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass) 
      }   
      snapshotRepository(url: Repo_Upload_Snapshot){ 
       authentication(userName: project.Repo_Upload_User, password: project.Repo_Upload_Pass) 
      } 
     } 
    } 
} 

は、私がどのプラグインにどのような方法でこれをパックすることができます瓶として私のレポにアップロードできますか?ご覧のとおり、設定フェーズのコードについてです。

ありがとうございます。

答えて

1

あなたは確かにプラグインからbuild.gradleで利用可能なすべての機能を使用することができます。

build.gradleファイルは、プロジェクトオブジェクトをデリゲートとして設定して実行するGroovyスクリプトであり、taskなどのように使用するほとんどのマジックワードはProjectクラスの単なるメソッドです。最も重要な違いは、カスタムプラグインまたはタスクでは、プロジェクトと明示的に対話する必要があることです。このような

何かがトリックを行う必要があります。もちろんdocumentation for RepositoryHandler

を参照してください、repositoriesクロージャ内の利用可能な方法について

class MyPlugin implements Plugin<Project> { 
    void apply(Project project) { 
     project.repositories { 
      maven { 
       url project.Repo_GP_Internal 
       credentials { 
        username project.Repo_GP_User 
       } 
      } 
     } 
    } 
} 

を、あなたのプロジェクトは、あなたのプラグインにアクセスするかの疑問が残っています。たとえば、それをmavenリポジトリから取得している可能性があります。この場合、各プロジェクトで明示的にそのmavenリポジトリパラメータを使用してbuildscript { repositories {を定義する必要があります。

+0

ありがとうそれは、このコードです!この説明で私は確かに私の目標を達成するでしょう。 –

0

gradle.propertiesファイルからプラグインのプロパティを読み出すのに苦労して、Andreiの答えに加えて何かを投稿したいと思います。

Properties props = new Properties() 
props.load(new FileInputStream("gradle.properties")) 

、あなたはこのようにプロパティにアクセスすることができます:props.Repo_GP_Internal

+0

それは奇妙です:あなたはそれらを読んで気にする必要はありません。代わりに、Gradleはuser.home/gradle.propertiesとproject.dir/gradle.propertiesを解析し、project.myPropertyとしてアクセス可能なこれらのファイルのプロパティを作成する必要があります。しかし、どちらのファイルにもプロパティが設定されていないと失敗します。この場合、project.property( "myProperty")を使用して値を安全に取得できます。 –

+0

いくつかStackoverflowの魔法か何かでなければなりません。あなたが書いたように、 'project.myProperty'のようなプロパティにアクセスしようとしました。ダブルチェックのスペルとすべて。それはうまくいかなかった。今度はもう一度試した後、それは完全に働いています...もう一度感謝します –

関連する問題