我创建了一个 Maven 插件来启动、清理和停止数据库。我的项目由一个包含 4 个模块的 pom 文件组成:
<modules>
<module>infrastructure</module>
<module>domain</module>
<module>application</module>
<module>presentation</module>
</modules>
插件只在这个pom中指定,而不是在模块的pom中指定。当我使用 cmd 启动数据库时:
mvn hsqldb:startdb
Maven 尝试为每个 pom 文件创建一个数据库。它实际上启动了 5 个数据库(一个用于父 pom,一个用于每个模块)。但是,我只想要一个(来自父 pom)。在我的父 pom 文件中,插件是这样声明的:
<plugin>
<groupId>sample.plugin</groupId>
<artifactId>hsqldb-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<inherited>false</inherited>
<dependencies>
<dependency>
...
</dependency>
</dependencies>
<executions>
...
</executions>
<configuration>
...
</configuration>
</plugin>
我的问题有什么解决办法吗?
亲切的问候,
瓦勒
对于下一个去那里的人来说,他们是pom级别的解决方案,就像这个stackoverflow命题中所说的那样:https://stackoverflow.com/a/46357305/2190096
您可以在第一个插件配置中使用
。所以它只会在父pom执行中运行。<inherited>false</inherited>
<build>
<plugins>
<plugin>
<groupId>com.test.plugin</groupId>
<artifactId>first-maven-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<inherited>false</inherited>
<execution>
<id>execution1</id>
<phase>initialize</phase>
<goals>
<goal>doit</goal>
</goals>
</execution>
</plugin>
<plugin>
<groupId>com.test.plugin2</groupId>
<artifactId>second-maven-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<execution>
<id>another</id>
<phase>package</phase>
<goals>
<goal>goforit</goal>
</goals>
</execution>
</plugin>
</plugins>
</build>