2015-02-03 1 views
2

maven 기반 프로젝트에서 작업 중입니다. 부모 모듈에 대한 부모 pom 파일과 자식 모듈에 대한 자식 pom 파일이 있습니다. 부모 모듈에서 사용자 지정 속성 (databaseType)을 사용하고 있으며 부모 pom에 선언되어 있습니다.Eclipse : 부모 pom의 사용자 정의 속성에 대한 자식 pom의 Maven 빌드 오류

<properties> 
    <databaseType>${databaseType}</databaseType> 
</properties> 

응용 프로그램을 빌드하는 동안 나는 -D 인수와 해당 건물을 성공적으로 전달합니다. 내가 Eclipse에서 Maven 프로젝트를 만드는 오전 그러나, 나는 (받는다는 빌드가 잘 일어나고 있지만)

Project build error: Resolving expression: '${databaseType}': Detected 
the following recursive expression cycle in 'databaseType': [databaseType] 

무슨 문제가 될 수 자식 치어에 오류 아래는 무엇입니까? 어떤 도움을 주셔서 감사합니다.

+0

사용중인 eclispe 및 maven 플러그인의 버전은 무엇입니까? 우리는 m2e를 사용하여 많은 문제를 겪었습니다 ... – StephaneM

+0

이클립스 _Juno_와 maven 버전은 _3.0.4_ – atom

답변

1

-D으로 전달한 인수와 속성이 같은 이름을 갖는 것이 문제입니다. 인자를 제공하면, 그것은 maven이 표현식을 해석 할 때, 먼저 제공된 인자를 찾은 후 -D databaseType으로 찾은 다음 그 값을 <databaseType> 속성에 할당하기 때문에 작동합니다. 인수가 없으면 maven은 표현식을 해결하려고 시도하지만 동일한 pom에있는 <databaseType> 속성의 정의 만 찾아서 원을 만듭니다.

Maven과 Eclipse는 여기에서 변수를 확인하기 위해 다른 방법 (이클립스의 버그 일 수 있음)을 사용하거나 잘못된 설정으로 인해 발생합니다. 나는 -D 변수를 전달하는 것은 어떤 이유로 Eclipse에서 작동하지 않는다고 생각합니다.

예제는 실제로 아무 것도 처리하지 않습니다. ${databaseType}을 사용할 수있는 경우 속성을 명시 적으로 다시 정의하지 않아도됩니다. 또는 다음과 같이 부모 pom에 다른 속성 이름을 사용하십시오.

<properties> 
    <databaseType>${defaultDatabaseType}</databaseType> 
</properties> 

그러나 인수가 누락 된 경우에도 도움이되지 않습니다. Enforcer 플러그인을 사용하여 속성이 정의되어 있는지 확인합니다.

+0

입니다. _pom_ 데이터베이스 유형을 재정의하기 때문에 부모 속성을 사용하지 않는 것 같습니다. 하위 pom의 databaseType 등록 정보를 재정의하지 않고 상위 pom에만있는 현재 등록 정보. – atom

+0

@SomnathMusib 좋아, 그 경우에는 databaseType 인수가 eclipse에 없다고 생각합니다. 답변을 업데이트했습니다. – Kapep

관련 문제