我有多模块项目。依赖关系如下:
<dependencies>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-commons</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-places-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-devices-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-events-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-controls-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.gwr</groupId>
<artifactId>gwr-logs-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>而且,在每个模块/依赖项的src/main/resources下,我有一个名为<module>-persistence.zip (例如C:\gwr-logs-module\src\main\resources\logs-persistence.zip)的ZIP文件。我想将每个模块的ZIP文件复制到其他目录下,比如C:\users\user\project。我将maven-resources-plugin定义如下:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-presubscriptionfiles</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${user.home}/${dasmo.storage}/</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${basedir}/../gwr-logs-module/src/main/resources</directory>
<includes>
<include>*.zip</include>
</includes>
</resource>
<resource>
<directory>${basedir}/../gwr-devices-module/src/main/resources</directory>
<includes>
<include>*.zip</include>
</includes>
</resource>
<resource>
<directory>${basedir}/../gwr-controls-module/src/main/resources</directory>
<includes>
<include>*.zip</include>
</includes>
</resource>
<resource>
<directory>${basedir}/../gwr-events-module/src/main/resources</directory>
<includes>
<include>*.zip</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>正如您所看到的,在资源部分,我必须对每个模块名进行硬编码。我怎么才能避免这种情况?我们不能使用每个依赖项的artifactId吗?如果是,如何使用?或者还有其他方法来做这份工作?
非常感谢。你好啊,叶什维德
发布于 2015-06-05 23:47:33
您可以将多模块POM中的<plugin>部分简化为以下内容:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-presubscriptionfiles</id>
<!-- Note: this phase is more appropriate than 'validate' -->
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${user.home}/${dasmo.storage}</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<!-- or likewise
<directory>${project.projectDirectory}/src/main/resources</directory>
-->
<includes>
<include>*.zip</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>如果您在任何子模块POMs中将您的多模块项目声明为<parent>,这将由它们继承(请参阅POM简介,项目继承),并在每个子模块构建时执行。
注意:反对basedir而赞成project.basedir.
有关进一步阅读,请参见Maven:完整的参考,多模块和继承。
https://stackoverflow.com/questions/28669193
复制相似问题