2009-04-03 3 views
3

현재 운영 팀이 배포하기 쉬운 방법으로 작은 앱을 패키징하려고합니다. 내 요구 사항은 프로젝트가 컴파일되고 압축된다는 것입니다.메이븐 어셈블리 생성

명령 줄에서 "mvn -DmyProfile clean generate-sources package"명령을 실행하고 출력을 위해 zip 형식 사용을 선언 할 때 맨 위에 놓아야 할 src.xml 파일을 작성했습니다 .

결과적으로 대상 폴더에 jar 및 zip 파일 2 개가 있습니다. zip 파일은 POM의 올바른 값을 입력하지 않은 것을 제외하고는 필자가 필요로하는 방식으로 정확하게 구조화되어 있습니다. 대신 모든 {변수}는 여전히 존재합니다. 반면에 jar는 모든 올바른 값을 주입하는 것처럼 보이지만 jar의 구조는 내가 필요로하는 것이 아닙니다.

키커는 내 프로젝트에 Java Service Wrapper를 추가하려고했기 때문에이 문제가 발생하며 모든 새 파일이 프로젝트 폴더 구조에 있어야하는 위치를 선언하려면 src.xml 파일이 있어야합니다. 그 전에 똑같은 명령어가 완벽하게 작동 할 것이고 jar 구조조차도 Eclipse의 실제 프로젝트 구조와 더 일관성이있었습니다.

Java Service Wrapper를 비난하지 않고, 모든 것을 제대로 작동 시키려고하는지 궁금하지 않으면 MVN 어셈블리와 충돌을 일으키지 않았습니다.

도움을 주시면 감사하겠습니다.

감사합니다,

+0

필요할 경우 pom의 관련 부분을 붙여 넣을 수있는 가능성이 있습니까 (더미 값 사용). – whaley

답변

0

좋아, 그럼 내 두 번째 문제에 대한 답을 찾았습니다. maven 명령이 잘못되었습니다. 성공적으로 수행 한 작업은 다음과 같습니다.

그리고 내 설정 파일의 올바른 위치에 올바른 값을 입력하십시오. -D 대신 -P 스위치를 사용하여 프로필을 선택합니다.

+1

-D는 속성을 정의합니다.이 속성은 활성화 할 프로필을 트리거하는 데 선택적으로 사용할 수 있습니다. -P는 pom.xml의 활성화 규칙에 무엇이 있는지 상관없이 프로필을 직접 활성화합니다. –

1

얀은 그래서 메이븐은 우편 아카이브 내부의 lib 폴더에 포함됩니다 "스냅 샷"항아리를 만들어 밝혀졌습니다. 스냅 샷 jar에는 올바른 값으로 주입 된 설정 파일이 들어 있습니다. 즉, 파일 시스템 참조 대신 클래스 로더를 사용하여 구성 파일을로드하면 제대로 작동 할 것입니다.

필자는 설정 파일을 Zip 아카이브의 루트에 두지 말라고 들었습니다. 따라서 Maven이 압축 파일을 삽입하지 않고 그냥 밀어 넣는 설정 파일은 필자의 경우 처음에는 존재하지 않아야한다.

그러나 여기에는 pom.xml 파일에 포함됩니다 내 src.xml 파일의 새로운 내용입니다 : 아직도 항아리와 우편 아카이브를 출력하지만,

<assembly> 
<id>bin</id> 
<includeBaseDirectory>false</includeBaseDirectory> 
<formats> 
    <format>zip</format> 
</formats> 
<fileSets> 
    <fileSet> 
     <directory>src/main/bin</directory> 
     <outputDirectory>/bin</outputDirectory> 
     <includes> 
      <include>**/*.sh</include> 
     </includes> 
     <fileMode>777</fileMode> 
    </fileSet> 
    <fileSet> 
     <directory>lib</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>**/*.jar</include> 
     </includes> 
    </fileSet> 
    <!-- Wrapper files --> 
    <fileSet> 
     <directory>lib/wrapper</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
    </fileSet> 
    <fileSet> 
     <directory>src/main/bin/wrapper</directory> 
     <outputDirectory>/bin/wrapper</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     <fileMode>777</fileMode> 
    </fileSet> 
    <fileSet> 
     <directory>src/main/conf</directory> 
     <outputDirectory>conf</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
    </fileSet> 
</fileSets> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>*:jar:*</include> 
     </includes> 
     <excludes> 
      <exclude>*:sources</exclude> 
     </excludes> 
    </dependencySet> 
</dependencySets></assembly> 

우편 스냅 샷 항아리를 포함하고 있기 때문에 모든 것이 이제는 괜찮을 것입니다. ...을 제외하고

(그리고 그것은 또 다른 게시물에 대한 수 그래서 나는이 질문에 대한 주제를 꺼 있으면 알려 주시기 수) 설정 파일에 주입 된 값은 내 프로필에서 하나가 아닌 것을

내 POM.xml. 내 .m2 폴더에있는 내 settings.xml의 파일입니다.

mvn -Denv-prod clean generate-sources package 

는 "ENV-자극은"인 경우 : 여기에 다시

<activation> 
<activeByDefault>false</activeByDefault> 
</activation> 

명령 줄 내가 실행 :하지만 Settings.XML의 프로필의 활성화를 해제하면이 문제를 해결하지 않는 것 주입 할 값을 포함하는 pom.xml의 프로파일.

아이디어가 있으십니까?

관련 문제