2016-12-18 4 views
0

maven에서 gradle로 마이그레이션하는 방법을 찾고 있습니다. 현재 설정에는 모든 버전 종속성을 정의하는 마스터 pom이 있습니다.Gradle Maven Bom Properties

프로젝트 이름은 마스터 치어과 같은 조각이 : 이제

<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에 값을 넣으려고했지만 그 문제가 있습니다.

db-version은 gradle에 의해 지원되지 않습니다. 왜냐하면 -는 산술 연산으로 해석하기 때문입니다. 내가 대신 작동하는 것 같다 0.0.1700

=

db_version로 값을 정의했는데, 어떻게이 $ DB 버전 값을 무시 그래서 그것을 어떻게 설정합니까. 모든 아티팩트에 명시 적으로 버전을 설정하지 않아도됩니다.

필자가보기에 이상적인 시나리오는 bom 파일의 속성을 간단하게 무시할 수있게하는 것입니다.

전에이 문제를 겪은 사람이 있습니까? 또는 해결 방법이 있습니까?

+0

BOM 또는 POM을 의미합니까? –

+0

Gradle은이 패턴을 bom이라고 부르는 것 같지만 기본적으로 의존성을 관리하기 위해 게시 된 maven pom 파일입니다. 견적 : https://gradle.org/migrating-a-maven-build-to-gradle/. ""Maven은 태그 내부의 별도 POM에서 종속성 목록을 지정할 수 있습니다.이 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 
    ] 
} 

당신이 방법으로 종속성을 다시 정의해야하지만이 작업을 수행합니다. 누군가가 더 좋은 패턴을 가지고 있다면 알려주세요.

관련 문제