2013-04-09 22 views
7

Tôi đang gặp một dự án của các hình thức sau đâyđẩy nhanh tiến độ lắp ráp maven của nhiều mô-đun

- pom.xml 
- projectA 
    - pom.xml 
    - src/main/ 
    - java 
    - startupScript 
- projectB 
    - pom.xml 
    - src/main/ 
    - java 
    - startupScript 
- projectAssembly 
    - pom.xml 

Tôi muốn projectAssembly để sản xuất một tar.gz rằng sẽ chứa hai thư mục một cho PROJECTA và một cho projectB, trong mỗi thư mục, sẽ có các phụ thuộc của dự án và thư viện startupScript.

Các "ngây thơ" cách để làm điều đó là để thêm assembly.xml tập tin cho từng dự án, một tập tin mà khoảng trông giống như:

<assembly> 
<formats> 
    <format>tar.gz</format> 
</formats> 
<baseDirectory>/${project.artifactId}</baseDirectory> 
<fileSets> 
    <fileSet> 
     <directory>${basedir}/src/main/startupScripts</directory> 
     <outputDirectory>/startupScripts</outputDirectory> 
    </fileSet> 
</fileSets> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 
</assembly> 

Sau đó, trong projectAssembly, phụ thuộc vào <type>tar.gz</type> của cả hai projectAprojectB, và thêm một file lắp ráp trong đó khoảng trông giống như

<assembly> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <unpack>true</unpack> 
    </dependencySet> 
</dependencySets> 
</assembly> 

làm việc này, tuy nhiên, tôi không cần trung gian tar.gz các dự án A và 01.và sản xuất chúng, đặc biệt nếu chúng có nhiều phụ thuộc, mất nhiều thời gian.

Làm thế nào tôi có thể yêu cầu maven trực tiếp lắp ráp tar.gz của projectAssembly mà không lãng phí thời gian đóng gói và giải nén tài liệu lưu trữ trung gian?

+0

Bạn có cần phụ thuộc trong tệp a và b tar.gz của dự án không? Nếu không chỉ loại bỏ dependencySets khỏi bộ mô tả assembly. – khmarbaise

+0

@khmarbaise nhưng chúng sẽ xuất hiện như thế nào trong tar.gz cuối cùng được tạo bởi 'assemblyProject'? – mikebloch

+0

Xin chào! Bạn đang sử dụng phiên bản Maven nào? – Jan

Trả lời

1

mô tả assembly của bạn trong projectAssembly cần phải giống như thế này (Xem ý kiến ​​bên trong):

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
<id>bin</id> 
<formats> 
    <format>dir</format> 
</formats> 
<includeBaseDirectory>false</includeBaseDirectory> 
<moduleSets> 
    <moduleSet> 

    <!-- Enable access to all projects in the current multimodule build! --> 
    <useAllReactorProjects>true</useAllReactorProjects> 

    <!-- Now, select which projects to include in this module-set. --> 
    <includes> 
     <include>*:projectA</include> 
     <include>*:projectB</include> 
    </includes> 

    <!-- Select and map resources from each module --> 
    <sources> 
     <includeModuleDirectory>false</includeModuleDirectory> 
     <fileSets> 
     <fileSet> 
      <directory>src/main/startupScript</directory> 
      <outputDirectory>${module.artifactId}/startupScript</outputDirectory> 
     </fileSet> 
     </fileSets> 
    </sources> 

    <!-- Select and map dependencies from each module --> 
    <binaries> 
     <dependencySets> 
     <dependencySet> 
      <outputDirectory>${module.artifactId}/lib</outputDirectory> 
     </dependencySet> 
     </dependencySets> 
    </binaries> 
    </moduleSet> 
</moduleSets> 
</assembly> 

Tôi tin rằng sẽ là những gì bạn cần. Nếu không cho chúng tôi biết ..