首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Maven中获得依赖关系的artificactId?

如何在Maven中获得依赖关系的artificactId?
EN

Stack Overflow用户
提问于 2015-02-23 08:01:45
回答 1查看 44关注 0票数 1

我有多模块项目。依赖关系如下:

代码语言:javascript
复制
<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定义如下:

代码语言:javascript
复制
<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吗?如果是,如何使用?或者还有其他方法来做这份工作?

非常感谢。你好啊,叶什维德

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 23:47:33

您可以将多模块POM中的<plugin>部分简化为以下内容:

代码语言:javascript
复制
<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:完整的参考,多模块和继承

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28669193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档