2011-10-19 11 views
4

既存のJarのコレクションをMavenリポジトリにアップロードするにはどうすればよいですか? Jarsは、GradleにインポートされたANTタスクから構築され、自分のタスクへの依存として使用されます... Jarsにはバージョンタグがないため、アップロード時にすべて同じバージョン番号を受け取る必要があります...GradleのMavenサーバーにサードパーティJarの既存のコレクションをアップロードするにはどうすればよいですか?

apply plugin: 'java' 
apply plugin: 'maven' 

version = "6.1.1" 
group = "com.oahu" 

ant.importBuild "$projectDir/tools/ant/package.xml" 

uploadArchives(dependsOn: ["oahu-jar", "client-sdk-jar", "common-jar"]) << { 
    // the dependencies will generate "oahu.jar", "oahu_client_sdk.jar", "common.jar" 

    // UPLOAD THE DEPENDENCIES LISTED ABOVE LOCATED AT the subdirectory "build/" 

    description = "Uploads the generated jar ${archivesBaseName}-${version}.jar to ${cn_mvn_serverUrl}" 
    repositories.mavenDeployer { 
     repository(url: "${cn_mvn_releaseUrl}") { 
      authentication(userName: "${cn_mvn_username}", password: "${cn_mvn_password}") 
     } 
    } 
} 

"oahu-jar"、 "client-sdk-jar"、 "common-jar"というタスクは、ANTからインポートされたタスクです...私はMavenリポジトリの設定を既に別のプロジェクトから行っています...しかし、 Mavenプラグインは、Javaプラグインからjarタスクによって生成されたJARをアップロード...輸入ANTタスクを考慮すると生成:

  • build.gradle
  • SRC
  • ビルド | - "oahu.jar" | - "oahu_client_sdk.jar" | - "common.jarを"

この結果が与えられたとのそれらジャーのアップロードする必要がありますバージョン...

"oahu-6.1.1.jar"、 "oahu_client_sdk-6.1.1.jar"、 "common-6.1.1.jar" ...すべてMavenリポジトリにアップロード...

sourceSetを追加しますか?構成?アーティファクト?

答えて

4

現在、gradleによって明示的にサポートされていないので、そのためにいくつかのスクリプトを実行する必要があります。あなたには、いくつかの他のGradleでのアーカイブに依存することができるようにしたい場合は

apply plugin:'java' 
apply plugin:'maven' 

import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact 

version = "6.1.1" 
group = "com.oahu" 

ant.importBuild "$projectDir/tools/ant/package.xml" 

// a list of the ant tasks that create a jar 
// I assumed the following convention: 
// ant task named "SampleAntJar-jar" creates the jar "build/SampleAntJar.jar" 
def antJarTasks = ["SampleAntJar-jar", "SecondSampleAntJar-jar"] 

artifacts{ 
    //for each ant task add a defaultpublishArtifact to the archives configuration 
    antJarTasks.each{ taskName -> 
     def artifactName = taskName - '-jar' 
     archives new DefaultPublishArtifact(artifactName, "jar", "jar", null, new    
         Date(), new File("$buildDir", "${artifactName}.jar"))  
    } 
} 

uploadArchives(){ 
    dependsOn: antJarTasks 
    repositories { 
     mavenDeployer { 
      repository(url: "file://{'/Users/Rene/.m2/repository/'}") 
      antJarTasks.each{ antJarTask -> 
       antJarName = antJarTask - "-jar" 
       addFilter(antJarName) {artifact, file -> 
        artifact.name == antJarName 
       } 
       pom(antJarName).artifactId = antJarName 
      } 
     } 
    } 
} 

に関して、 ルネ

+0

:上記のスニペットに基づいて、私は適応が容易であるべきサンプルスニペットを、作成しました指定された成果物を作成するタスクを 'DefaultPublishArtifact'に追加したいと思うでしょう。追加のコンストラクタ引数として 'tasks [taskName]'を指定する余分な引数を追加するだけです。 (これはおそらくuploadArchivesタスクのために余分なdependsOnを避けることを可能にします。) –

関連する問題