2010-02-25 4 views
5

리소스 만 있지만 소스가없고 다른 프로젝트에서 재사용 할 수있는 메이븐 이슈를 빌드 할 수 있습니까?재사용 가능한 자원 프로젝트를 사용할 수 있습니까?

동기는 다음과 같습니다. html/css/javascript 코드 만 포함하는 라이브러리가 있습니다. 이 도서관은 전쟁 프로젝트에 자원으로 포장되어야합니다. 지금은 단일 자원으로 웹 아카이브를 구축합니다. 하지만 html/css/javascript 코드를 새로운 유물로 분리하여 여러 전쟁 프로젝트에서 재사용 할 수 있습니까?

답변

9

사용 Maven Overlays. 더 많은 예제는 Manipulating WAR Overlays을 참조하십시오.

+1

@Pascal Thivent 당신은 당신의 길을 알고있는 것처럼 보입니다. arround maven 워드 프로세서.에서 z까지의 모든 문서가 들어있는 링크가 있습니까? 아마도 나중에 사용할 수있는 몇 가지 항목을 찾을 수 있습니다. 어쩌면 지금까지도 존재하지만 모릅니다. +1 – ant

+0

이것입니다! 감사. –

+0

@ c0mrade 설명서는 사람들이 종종 불평하는 내용이므로 귀하가 옳다고 생각합니다 (정보는 찾을 수 있지만 찾기 어렵습니다). 다행히도, 나는 지금 어디에서 무엇을 보는지, 무엇을 검색해야 할지를 안다. 하지만 http://www.sonatype.com/book/ (온라인에서 사용 가능) 또는 http://www.packtpub.com/apache-maven-2-effective-implementations/와 같이 유용한 책이 있습니다. 도서. 추천. –

1

Maven assembly plugin으로 할 수 있습니다.

+0

정확히 어떻게 할 수 있습니까? –

+0

@ Volodymyr 내가 링크 된 사용자 안내서를 확인하십시오. 여기에는 예제도 들어 있습니다. 더 구체적인 질문이 있고 프로젝트에 대한 자세한 내용을 알려 주시면보다 구체적인 답변을 드릴 수 있습니다 :-) –

+0

배포 어셈블리를 이해하는 한 최종적이고 재사용 할 수없는 것이 있습니다. 그렇지 않니? 그렇다면 그들은 내가 필요한 것을하기에 적합하지 않습니다. maven-assembly-plugin을 사용하면 리소스 라이브러리에 대한 배포 어셈블리를 만들 수 있습니다. 제 전쟁에서 나는이 유물을 의존성으로 사용할 수 있습니다. 이 경우 target \ war-artifact-1.0 \ folder에 압축을 푼 배포 어셈블리의 내용 대신 target \ war-artifact-1.0 \ WEB-INF \ lib \ resource-artifact-1.0.jar을 얻습니다. 제공된 가이드에서 웹 아카이브의 루트에 배포 어셈블리를 추출 할 방법을 찾지 못했습니다. –

0

maven을 사용하면 몇 가지 리소스를 함께 물리 칠 수 없으며 웹 프로젝트의 종속성으로 추가하지 않을 것이라고 생각하지 않습니다.

그러나 리소스를 참조해야하는 방식은 약간 이상합니다. WEB-INF/lib 내의 jar 파일 내에서 CSS 스타일 시트를 Java 자원으로로드하는 데 익숙하지 않습니다.

WAR 파일의 루트에 상대적인 일반 웹 리소스로 클래스 로더를 참조하고 싶습니다.

+0

예, jar 파일을 만들 필요가 없습니다. 나는 그들에게 클래스 로더가 아닌 정적으로 그들을 참조하기 위해 나의 웹 폴더와 웹 아카이브에 존재할 필요가있다. –

0

이 테스트에 아주 간단한 일입니다 :

$ ls -R 
.: 
pom.xml src 

./src: 
main 

./src/main: 
resources 

./src/main/resources: 
README.txt content-is-here.txt 

$ mvn package 
... Maven doing it's thing... 

$ unzip -l target/test-1.0-SNAPSHOT.jar 
Archive: target/test-1.0-SNAPSHOT.jar 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 02-25-2010 16:18 META-INF/ 
     123 02-25-2010 16:18 META-INF/MANIFEST.MF 
     10 02-25-2010 16:18 content-is-here.txt 
     0 02-25-2010 16:18 README.txt 
     0 02-25-2010 16:18 META-INF/maven/ 
     0 02-25-2010 16:18 META-INF/maven/group/ 
     0 02-25-2010 16:18 META-INF/maven/group/test/ 
     626 02-25-2010 16:15 META-INF/maven/group/test/pom.xml 
     106 02-25-2010 16:18 META-INF/maven/group/test/pom.properties 
---------      ------- 
     865      9 files 
+0

2 개의 프로젝트가 필요합니다. 첫 번째 프로젝트에는 리소스가 있어야합니다. 두 번째 프로젝트에는 첫 번째 프로젝트에서부터 전쟁에 이르는 리소스가 포함되어야합니다. –

+0

그러면 WAR 오버레이가 원하는 것입니다. –

+0

네, 오버레이가 내가 원하는 바로 지금 볼 수 있습니다. –

0

이는 자원 이슈를 거슬리는 예를 들면 validate 단계에서 전쟁 프로젝트에 SRC/메인/자원으로 포장을 풀하여 수행 할 수 있습니다. 자원 함은 사소하지만 전쟁 더미에는 다음이 포함됩니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>validate</phase> 
      <goals> 
      <goal>unpack</goal> 
      </goals> 
      <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>my.company</groupId> 
        <artifactId>resource-artifact</artifactId> 
        <version>1.0</version> 
        <overWrite>true</overWrite> 
        <outputDirectory>src/main/resources</outputDirectory> 
       </artifactItem> 
      </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
관련 문제