2017-02-15 3 views
3

MavenCentralにライブラリを公開しようとしています。だから私はこれに続くChris Banes postです。mavenCentralに公開するときにpomから依存関係を削除するには

すべてが動作しますが、私は少し問題を抱えている:ライブラリは、GoogleがサービスのLIBを再生使用しています。

compile 'com.google.android.gms:play-services:10.2.0' 

しかし、私は依存関係を必要としない開発者が自分のアプリケーションを使用している場合、それは、単なるオプションであり、彼の依存関係にプレイサービスを追加し、それを検出していくつかのクラスを使用したいと思います。しかし、開発者はこの依存関係を追加せず、クラスが見つからず、それらを使用しないことを検出します。

基本的には、コンパイルするために依存関係を使用したいのですが、POMファイルにこの依存関係を追加する必要はありません。これどうやってするの?

答えて

1

Maven plugin docより、pom.whenConfiguredを使用して依存関係を再編成できます。例えば

、以下の依存関係としてjunit & play-servicesたartifactIdなりません:あなたはplay-servicesを除外するために、次の必要がありますあなたの例では

whenConfigured { 
    p - > 
     p.dependencies = p.dependencies.findAll { 
      dep - > (dep.artifactId.notIn(["junit", "play-services"])) 
     } 
} 

を:

pom { 

    project { 
     name POM_NAME 
     packaging POM_PACKAGING 
     description POM_DESCRIPTION 
     url POM_URL 

     scm { 
      url POM_SCM_URL 
      connection POM_SCM_CONNECTION 
      developerConnection POM_SCM_DEV_CONNECTION 
     } 

     licenses { 
      license { 
       name POM_LICENCE_NAME 
       url POM_LICENCE_URL 
       distribution POM_LICENCE_DIST 
      } 
     } 

     developers { 
      developer { 
       id POM_DEVELOPER_ID 
       name POM_DEVELOPER_NAME 
      } 
     } 
    } 

    whenConfigured { 
     p - > 
      p.dependencies = p.dependencies.findAll { 
       dep - > (dep.artifactId.notIn(["play-services"])) 
      } 
    } 
} 

またとして除外することができますdep.groupIdまたはdep.version

+0

ありがとうfまたはあなたの速い答え。私はグラデルやグルーヴィーではあまり経験がありませんが、Chris Banesの例ではどこにこのコードを書いていますか?私がmaven-push.gradleファイルに入れようとすると、フォーマットで文句を言う – Addev

+0

'build.gradle'の' pom.project'を自分の投稿の 'pom'オブジェクトに置き換えるとうまくいくのですか? –

+0

私のプロジェクトの依存関係を公開するのを避けるために、基本的に 'pom.whenConfigured {pom-> pom.dependencies = [] }'を 'mavenDeployer {}'の中に追加しました。ありがとうございました – Addev

関連する問題