我创建了一个 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.xml 中会更有意义。<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 只是完全在做其他事情?
(注意:groupId/version/artifactIds<configuration>
是必需的,因为它们是插件的(字符串)参数;大概如果我让 run-straight-from-dependency 方法工作,我可以将它们重构掉,但同样,它甚至没有运行带有参数的笨拙版本。)