【问题标题】:generated file in the wrong place生成的文件在错误的地方
【发布时间】:2019-01-16 19:35:46
【问题描述】:

我正在使用 maven 资源插件通过在 war 文件中进行过滤来生成纯文件。我在文件夹 src/main/webapp/app 中有带有变量的模板文件

<build>
<plugins>
    ...
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <phase>process-resources</phase>
            </execution>
        </executions>
    </plugin>
</plugins>

<resources>
    <resource>
        <directory>src/main/webapp/app</directory>
        <filtering>true</filtering>
    </resource>
</resources>
</build>

问题是生成的文件位于 WEB-INF/classes 文件夹中,我需要它位于战争根目录的 app 文件夹中。 战争结构应该是

*.jsf
app/<generated_file>
WEB-INF/

我该怎么做?

【问题讨论】:

  • 可能与this question 相关,但不重复。那里的答案之一可能会有所帮助。

标签: maven maven-resources-plugin


【解决方案1】:

如果您想在构建过程中将某些内容复制到另一个结构,则必须添加 copy-resources 目标,您可以指向自定义输出路径:

<configuration>
  <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
  <resources>          
    <resource>
      <directory>src/non-packaged-resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>              
</configuration>

这可以在here in the documentation找到。

【讨论】:

  • 你能告诉你你会怎么做吗?我将您的示例配置与 ${basedir}/target/${project.artifactId}-${project.version}/appsrc/main/webapp/app 一起使用.. 并且仍然在 WEB-INF/classes 中获取生成的文件
  • 如果我在准备包阶段触发复制,似乎maven在包阶段用模板一覆盖生成的文件(战争仍然有模板文件)。如果我在打包阶段触发复制,则生成的文件被复制到目标/ 中,看起来还可以,但是打包后战争(所以战争仍然有模板文件)
【解决方案2】:

有了 cmets,我终于得到了解决方案。只是将 outputDirectory 参数设置为 src/main/webapp/app 并将模板放在 src/main/webapp 之外的另一个位置。就我而言,我将它放在文件夹 src/main/jnlp 中。所以最后这是解决方案..希望它可以帮助其他人

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <phase>process-resources</phase>                        
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/src/main/webapp/app</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/jnlp</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2018-10-14
    • 2014-11-02
    相关资源
    最近更新 更多