我可以安装maven artifact运行maven插件吗?

时间:2013-06-03 19:32:44

标签: maven maven-plugin m2eclipse m2e

我创建了一个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版本。)

1 个答案:

答案 0 :(得分:0)

两点:

首先,我同意khmarbaise,因为你不需要自己的插件来执行这些任务。要解压缩到特定位置,您可以使用dependency:unpack-dependencies和outputDirectory参数。 如果您需要更多配置,可以使用程序集插件来构建工件(要解压缩)。

对于第二点,在我看来,您希望在许多项目中使用lib-with-templates的内容。为什么不将插件和依赖项添加到您需要的每个pom中包含的父pom?然后你不需要在“每个pom”中声明它。如果你不是真的需要它在每个pom中你可以把它放在一个配置文件中并为它选择一个适当的激活。

HTH!