2011-01-10 5 views
1

값을 파일로 대체하기 전에 Maven에서 간단한 String.replace() 호출과 같은 속성 값을 변환하는 방법이 있습니까?대체 할 때 Maven 속성 값 수정

특정 디렉터리 구조로 maven depenedencies가 포함 된 어셈블리를 만들려는 경우가 있습니다. 특히 각 artifact를 groupId에 매핑되는 디렉토리 구조에 배치하려고합니다. 즉, 제가 유물 org.example.app:library1:jar을 가지고 있다면, 그것을 org/example/app/library1.jar 디렉토리에 넣고 싶습니다.

종속 아티팩트를 하위 디렉토리에 넣기 위해 어셈블리 디스크립터를 만들려고했지만 groupId (점 표기법)를 경로로 변환 할 수없는 지점에 도달했습니다. 아래는 내가 사용하고있는 어셈블리 파일의 dependencySet 부분입니다.

<dependencySets> 
    <dependencySet> 
    <outputFileNameMapping>${artifact.groupId}/${artifact.artifactId}/${artifact.version}/${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping> 
    <outputDirectory>.</outputDirectory> 
    <unpack>false</unpack> 
    <useTransitiveDependencies>true</useTransitiveDependencies> 
    <useTransitiveFiltering>false</useTransitiveFiltering> 
    <useProjectArtifact>false</useProjectArtifact> 
    </dependencySet> 
</dependencySets> 

P. 어셈블리 플러그인의 저장소 모드도 조사했지만 너무 많은 정보 (예 : SHA1 및 MD5 해시, Maven POM 파일)가 포함되어 있습니다.

답변

0

어셈블리 설명자 파일은 어셈블리 플러그인에서 사용되며 그 자체로 $ {my.property}와 같은 Maven 속성을 포함 할 수있는 메커니즘이 없습니다. 그러나, 해결 방법으로 당신은 어셈블리 디스크립터 파일을 (한 곳에서 다른 곳으로 복사하는 동안) "필터"하기 위해 maven 리소스 플러그인을 사용할 수 있습니다. 이것은 당신이 찾고있을 대체를 가능하게 할 것입니다.

그러면 Maven 어셈블리 플러그인에서 필터링 된 설명자 파일을 사용하게됩니다.