2016-12-18 22 views
0

私はmavenからgradleへの移行を検討しています。現在の設定では、すべてのバージョン依存関係を定義するマスターpomがあります。Gradle Maven Bomのプロパティ

プロジェクト名は、マスター・POMであり、このようなスニペットがあります。今

<properties> 
    <commons-beanutils-version>1.9.1</commons-beanutils-version> 
</properties> 

:私たちはこれらの線に沿って何かを定義

 <dependency> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
      <version>${commons-beanutils-version}</version> 
     </dependency> 

.... 以降ダウンファイルの中をこれは今まで私が持っているものです:

plugins { 
    id "com.github.johnrengelman.shadow" version "1.2.4" 
    id "nebula.dependency-recommender" version "3.7.0" 
} 


apply plugin: 'java' 
apply plugin: 'war' 

apply plugin: 'nebula.dependency-recommender' 
apply plugin: "com.github.johnrengelman.shadow" 




version = '1.0.0-SNAPSHOT' 
sourceCompatibility = '1.8' 

description = """best-service-ever""" 



repositories { 
     mavenLocal() 
     maven { url 'https://repo.server.com/nexus/content/groups/public' 
      credentials { 
       username 'username' 
       password nexusPassword 
      } 
    } 
     mavenCentral() 
     jcenter() 


} 

dependencyRecommendations { 
    mavenBom module: 'biz.company.name:master-pom:1.0.0-SNAPSHOT' 
} 



dependencies { 
      ... some dependencies 
      compile 'biz.company.name:db-schema' 
} 

この時点で、バージョンna med $ {db-version}とbuild-mavenから正しく定義されたものを使用してください。問題は、そのバージョンを特定のバージョンで上書きする必要があることです。

私はgradle.propertiesに値を入れてみましたが、それとの問題があります。演算として - それが解釈するため

デシベルバージョンは、のGradleによってサポートされていません。私が代わりに動作しているようです

DB_VERSION = 0.0.1700

として値を定義しようとしたが、どのようにそれは$ DB-バージョン値が上書きされますので、私はそれを設定します。私は明示的にバージョンを設定する必要はありません:すべての人工物にしたいと思います。

私の理想的なシナリオは、どちらか私は単にBOMファイルから来るのプロパティをオーバーライドすることが可能になります。

誰もこの問題に遭遇したことはありますか?または回避策がありますか?

+0

BOMまたはPOMを意味しますか? –

+0

GradleはこのパターンをBOMと呼んでいるようですが、基本的に依存関係を管理するために公開されているmaven pomファイルです。見積もり:https://gradle.org/migrating-a-maven-build-to-gradle/。 POM(BOM)の特殊なタイプを他のPOMにインポートすることができ、すべてのプロジェクトで一貫性のあるライブラリ名とバージョンを持つことができます。 "" " – csgeek

+0

私は少し脆いイモでは動作するように見えるこのパターンを見つけました。 – csgeek

答えて

0

これはおそらく部分的な答えです。

私はそれが少し脆く、少しも冗長だにもかかわらず動作しているようです。このパターンを見つけました。私が本当にやりたいことは、言うことです。

${common-service-version} = MyVersionNumber (which is defined in gradle.properties) 

例の修正:

dependencyRecommendations { 
    mavenBom module: 'biz.company.name:master-pom:1.0.0-SNAPSHOT' 
    /* Override properties from mavenBom */ 
    map recommendations: [ 'biz.company.name:shared-common-service': services_common_global_version, 
    'biz.company.name:services-core': services_common_global_version, 
    'biz.neustar.ms:test-services-common': services_common_global_version, 
    'biz.company.name:mip-db-schema': db_version, 
    'biz.company.name:services-api': services_api_version 
    ] 
} 

あなたが方法で依存関係を再定義する必要がありますが、これは、作業を行います。誰かがより良いパターンを持っているなら私に知らせてください。

関連する問題