簡體   English   中英

安裝了Maven構件后可以運行Maven插件嗎?

[英]Can I have maven artifact run maven plugin when it is installed?

我創建了一個Maven插件(稱為unpackTemplates),該插件將依賴項jar文件解壓縮,並將資源文件(在本例中為模板)從中復制到項目中的特定位置。

現在,我將以下內容放到每個具有模板依賴項的項目的pom文件中。 看起來像:

<project>
   <groupId>DuriansAreDope</groupId>
   <artifactId>DuriansAreDope</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <build>
      <plugin>
         <groupId>mycorp</groupId>
         <artifactId>unpackTemplates</artifactId>
         <version>1.0</version>
         <executions>
            <execution>
               <configuration>
                  <groupId>com.mycorp.lib</groupId>
                  <version>1.0</version>
                  <artifactId>Lib-With-Templates</artifactId>
               </configuration>
               <goals>
                  <goal>unpackTemplates</goal>
               </goals>
               <phase>generate-sources</phase>
            </execution>
         </executions>
      </plugin>
      <pluginManagement>....</pluginManagement>
   </build>
   <dependencies>
      <dependency>
         <groupId>com.mycorp.lib</groupId>
         <artifactId>Lib-With-Templates</artifactId>
         <version>1.0</version>
      </dependency>
   </dependencies>
</project>

上面的pom項目對我們有用。 它調用插件,插件完成它的工作。 但是,我們希望避免將插件部分添加到每個項目的pom中。

將插件部分放在依賴項pom中會更有意義。 這樣,除了像往常一樣添加<dependency>標記外,無需修改項目pom。 依賴關系使其插件可以在任何安裝位置運行。

我已經看到Gson的pom文件中包含一個<build><plugins>...</plugins></build>部分。 但是,當我將以下pom文件提供給我的依賴項時,插件將無法運行(盡管可以正確找到,下載,安裝等等)。

<project>
   <groupId>com.mycorp.lib</groupId>
   <artifactId>Lib-With-Templates</artifactId>
   <version>1.0</version>
   <build>
      <plugin>
         <groupId>mycorp</groupId>
         <artifactId>unpackTemplates</artifactId>
         <version>1.0</version>
         <executions>
            <execution>
               <configuration>
                  <groupId>com.mycorp.lib</groupId>
                  <version>1.0</version>
                  <artifactId>Lib-With-Templates</artifactId>
               </configuration>
               <goals>
                  <goal>unpackTemplates</goal>
               </goals>
               <phase>generate-sources</phase>
            </execution>
         </executions>
      </plugin>
      <pluginManagement>....</pluginManagement>
   </build>
</project>

有什么想法我做錯了,還是Gson pom只是在完全做其他事情?

(注意: <configuration>中的groupId / version / artifactIds是必需的,因為它們是插件的(字符串)參數;想必如果我能運行從依賴直接運行的方法,我可以將其重構掉,但是再次)甚至沒有運行帶有參數的kludgy版本。)

兩點:

首先,我同意khmarbaise,因為您不需要自己的插件即可執行這些任務。 要解壓到特定位置,可以使用dependency:unpack-dependencies和outputDirectory參數。 如果需要更多配置,則可以使用Assembly插件來構造您的工件(要解壓縮)。

對於第二點,在我看來,您想在許多項目中使用lib-with-templates的內容。 為什么不將插件和依賴項添加到您需要的每個pom中包含的父pom中呢? 然后,您無需在“每個pom”中聲明它。 如果您並不是真的需要每個pom,都可以將其放在配置文件中並為其選擇適當的激活方式。

HTH!

暫無
暫無

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

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