【问题标题】:maven-ear-plugin <packagingIncludes> not including project filesmaven-ear-plugin <packagingIncludes> 不包括项目文件
【发布时间】:2019-01-15 16:14:28
【问题描述】:

我的耳朵项目结构如下:

我的 pom.xml 是这样的:

  <plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.10</version>
    <configuration>
      <earSourceIncludes>META-INF/*</earSourceIncludes>
      <packagingIncludes>META-INF/*,**/*.war</packagingIncludes>
      <version>7</version>
                <modules>
                    <webModule>
                        <groupId>com.ex</groupId>
                        <artifactId>one</artifactId>
                    </webModule>
                </modules>
      <generateApplicationXml>false</generateApplicationXml>  
    </configuration>
  </plugin>

我想要的是将文件夹 META-INF 的内容包含在我的 ear 文件中,该文件夹位于 ear 文件根目录中名为 META-INF 的类似文件夹中。

我尝试了 earSourceIncludes 和 PackagingIncludes 的多种组合,但没有成功:我的 ear 文件有链接的应用程序 .war,这很好,还有一个 META-INF 文件夹,它没有我需要的东西,但是预生成的 MANIFEST .MF 文件和一个带有 pom 的 maven 文件夹。

我想知道我是否需要 earSourceIncludes。老实说,我不知道为什么它不能仅与 PackagingIncludes 参数一起使用。

【问题讨论】:

  • 也许我不明白,但 META-INF 文件夹在 src 文件夹之外,我认为插件不会拾取它。我认为如果你将 META-INF 放在 src/main/resources 文件夹中,它应该可以在没有 PackagingIncludes 的情况下工作。

标签: java maven ear maven-ear-plugin


【解决方案1】:

您可以使用maven-resource-plugin 将 META-INF 文件夹的内容包含到 META-INF 根文件夹中。见下文。

项目基目录 - ${project.basedir}

EAR 根目录 - ${project.rootdir}

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>                         
                <outputDirectory>${project.basedir}/META-INF</outputDirectory>
                <resources>
                    <resource>                      
                        <directory>${project.rootdir}/META-INF</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

  • 谢谢,我会尽力提供反馈
  • 更新:将 ear 插件与 resources 插件结合的想法是现成的,所以我会将答案标记为正确,但输出目录 project.basedir 不会将我的文件包含在 ear 中,因为显然ear 插件从构建目录 (/target) 中获取它们。所以我不得不使用 ${project.build.directory}/${project.build.finalName}/META-INF,它工作正常。对于更多的读者,这可能取决于您如何配置 ear 插件。
  • @Jorge.V 感谢您让我知道这一点。我对耳朵插件只有一点经验。
猜你喜欢
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2011-11-23
  • 2011-04-26
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2012-07-11
相关资源
最近更新 更多