2013-07-29 7 views
1

나는 Maven 3.0.4를 가지고 있으며, 다른 아티팩트들로 어셈블리를 만들려고하고있다. maven-assembly-plugin을 사용할 때 적절한 위치에 아티팩트 내용의 압축을 풀지 만 파일 (예 :/bin 디렉토리)의 실행 권한은 상실합니다. 나는 대상에 대한 의존성을 풀어 보려고 시도했다. (나는 사용 권한이 여전히 괜찮다고 생각한다.) 그리고 어셈블리로 복사하는 것을 사용했지만, 다시 파일 사용 권한이 없어졌다. 어떤 파일이 실행 가능한지 알아 내기 위해 의존성을 수동으로 검토해야한다면 정말 나쁠 것입니다.maven-assembly-plugin 파일 세트 권한이 변경 되었습니까?

누구나 명백한 버그를 해결할 수있는 방법이 있습니까? 임시 디렉터리의 파일을 어셈블리 최종 위치에 직접 복사하고 사용 권한을 유지할 수 있습니까? 그렇다면 어떻게?

+1

당신은 당신의 pom을 보여줄 필요가 있습니까? 당신의 OS는 무엇입니까? 오류가 정확히 무엇입니까? – mebada

+0

나는 혼란스러워한다. 권한은 언제 사라지나요? 한번 아카이브에 보관하십시오. 또는 그 전에 몇 권의 사본을합니까? –

+0

다음은 그 예입니다. /bin/a.sh와 권한 0755를 가진 이슈 A를 생성합니다. A를 포함하고 싶은 이슈 B를 생성합니다. B에 대한 maven-assembly-plugin의 태그를 사용하면 a.sh가 0644로 바뀝니다. If 대신 maven-dependency-plugin을 사용하여/target 아래에서 이슈 A를 압축 해제합니다. 압축을 풀 때 올바른 권한을가집니다. 어셈블리에서 을 사용하여 압축 해제 된 파일 세트를 B에 복사하면 다시 a.sh가 0644로 바뀝니다. B에 포함 된 A의 모든 항목에 대한 사용 권한을 유지하려고합니다. –

답변

3

마침내 대답을 찾았습니다. 어셈블리가 빌드 될 서브 프로젝트의 부모 pom이었던 pom 파일은 몇 년 전에 maven-assembly-plugin 버그 MASSEMBLY-449에 대한 회피책을 선언했습니다. 그 제안 된 해결 방법의 일환으로, 기본 fileMode가 644 인 블록이 입력되었습니다. 이것은 maven이 2.2이고 m-a-p가 2.2 일 때 다시 나타납니다. 우리는 maven 3.0.4로 전환했고 m-a-p는 몇 달 전에 2.4로 업데이트되었습니다. 그 시점에서 버그가 수정되었습니다. 분명히 해결 방법은 더 이상 필요하지 않으며 실제 실행 비트 설정을 방해한다는 의미였습니다. 블록을 제거하면 두 항목과 항목에 대한 모든 실행 권한이 다시 올바로 적용됩니다.

1

정말 도움이 될 것입니다. 당신이 g :

<dependencySet> 
    <outputDirectory>someDir</outputDirectory> 
    <outputFileNameMapping></outputFileNameMapping> 
    <unpack>true</unpack> 
    <useTransitiveDependencies>false</useTransitiveDependencies> 
    <useProjectArtifact>false</useProjectArtifact> 
    <useProjectAttachments>true</useProjectAttachments> 
    <includes> 
     <include>artifactA</include> 
    </includes> 
    <directoryMode>0755</directoryMode> 
    <fileMode>0755</fileMode> 
</dependencySet> 

<fileSet>, 당신의 의존성 세트, 전자에 <directoryMode> 및/또는 <fileMode>를 사용하고 있는가하면 같은 옵션이 있습니다.

+0

오늘 몇 분이 지나면, 어셈블리 파일 코드와 예제를 업로드 하겠지만,이 주석에 답장을하고 싶습니다. 또는 을 사용하고 싶지는 않습니다. 다운로드중인 이슈에는 0755 파일이 단지/bin에있을 필요가없는 수많은 파일 (예 : 전체 activemq 설치)이 있기 때문입니다. 기본적으로, 내가 찾고자하는 것은 메이븐 (maven)이 원래 아티팩트의 권한을 유지하는 솔루션이다. 오히려 그것들을 망쳐 놓고 각 파일을 수동으로 직접 찾아서 원래의 방식으로 되 돌린다. –

+1

당신은 다소 기본 운영 체제의 장점을 알고 있습니다. 예를 들어 유닉스에서 umask가 설정되면 파일 생성에 영향을 미친다. – user944849