簡體   English   中英

Maven-使用父項目中的程序集文件和配置

[英]Maven - use assembly file and configuration from the parent project

我有一個父項目,該項目定義了包括plugin.xml文件(創建tar.gz)的Assembly插件的整個配置。 現在,我希望有多個可以使用父級的項目配置和父級的匯編文件的子級。

現在,我嘗試了不同的場景,並且配置可以正常工作,但是我收到一個錯誤,即無法在本地找到程序集文件。 我想要實現的是不必在所有項目中一遍又一遍地配置和添加相同的文件。 有沒有辦法實現這個目標?

我使用maven-remote-resources-plugin共享程序集描述符。 首先,創建一個單獨的項目,其中包含您要共享的程序集描述符。

project-assemblies
  src
    main
      resources
        <your assembly descriptors, in any package structure you like>
  pom.xml

POM的構建部分(假設這是項目com.mycompany.project:project-assemblies):

<build>
  <plugins>
      <plugin>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <executions>
              <execution>
                  <goals>
                      <goal>bundle</goal>
                  </goals>
              </execution>
          </executions>
          <configuration>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </configuration>
      </plugin>
   </plugins>
</build>

要從另一個項目中引用它,請將其添加到項目的POM中:

<properties>
  <shared.assemblies.dir>${project.build.directory}/assemblies</shared.assemblies.dir>
  <project-assemblies.version><yourAssemblyProjectVersion</project-assemblies.version>
</properties>

<!-- copy the assembly descriptors into this project -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-remote-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>assemblies</id>
      <phase>initialize</phase>
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <resourceBundles>
          <resourceBundle>com.mycompany.project:project-assemblies:${project-assembly.version}</resourceBundle>
        </resourceBundles>
        <attached>false</attached>
        <outputDirectory>${shared.assemblies.dir}</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

附加到false的設置意味着捆綁包的內容將不會包含在最終的項目構建中。

<!-- Apply the retrieved assembly descriptor to this project -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>run-assembly</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptors>
          <descriptor>${shared.assemblies.dir}/<pathToAssemblyDescriptor></descriptor>
        </descriptors>
        <!-- other config here -->
      </configuration>
    </execution>
  </executions>
</plugin>

奇跡般有效。

您應該在所有子模塊的pom.xml中禁用匯編:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
    <skipAssembly>true</skipAssembly>
</configuration>
</plugin>

並且更經常地,建議在父pom.xml中創建一個專用的子模塊來配置組裝插件,而不是配置組裝插件

好吧,在父pom.xml中創建一個專用的子模塊來配置組裝插件,而不是配置組裝插件

至於示例,請參考: http : //maven.apache.org/plugins/maven-assembly-plugin/examples/multimodule/module-binary-inclusion-simple.html

在此示例中,它將創建一個名為:distribution的子模塊。

這是一個很好的例子! 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM