[英]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.