在maven的阶段,jsp被放在目标上?

时间:2016-04-03 00:45:27

标签: java maven jsp gruntjs maven-war-plugin

我需要知道在maven周期的哪个阶段将jsp放在目标目录上,以及通过哪个进程。

我使用grunt-maven-plugin对我的.jsp文件进行转换(如果你想知道,我会生成js脚本的插入)。

Grunt复制temp目录中的jsp文件,完成其工作并将更新的jsp放在target / $ {project.build.name}目录中。 (如果我只发动咕噜声,我可以查看它的工作)

我的问题是更新后的文件被原来在同一个存储库中移动的jsp覆盖。

如果我只发动grunt(我做mvn compile,谁发起了咕噜声任务),我可以检查我的咕噜声工作。但是,如果我执行mvn install,文件将被覆盖。

我想我可以通过在移动原始jsp之后启动grunt来纠正它。

问题:您是否知道 maven周期的哪个阶段将jsp放在目标目录上?

顺便说一下,我的项目是来自maven artifact webapp的webapp。

1 个答案:

答案 0 :(得分:1)

  

我需要知道在maven周期的哪个阶段将jsp放在目标目录上,以及通过哪个进程。

Maven War Plugin及其war目标的package阶段。

打包war,Maven版本默认 war:war阶段调用war(Maven War Plugin的package) ,根据default packaging bindings。因此,无需在POM文件中明确指定它。

Maven War Plugin将

  • 构建完整的webapp,默认情况下位于${project.build.directory}/${project.build.finalName}下,由webappDirectory配置条目
  • 指定
  • 默认情况下将其.war文件打包在${project.build.directory}下,由outputDirectory配置条目指定
  

我的问题是更新后的文件被原来在同一个存储库中移动的jsp覆盖。

在这种情况下,您遇到文件冲突,同一目标文件夹中的相同文件(具有不同内容)(target/${project.build.name}如上所述与上面的默认War Plugin outputDirectory相同)。

您可以将修改后的.jsp文件重定向到其他目录下,例如target/grunt,然后配置Maven War Plugin以从该目录中获取资源。这些额外的资源将在之后添加默认资源,并因此覆盖它们(如果发生冲突)。

例如,您可以使用以下内容配置POM文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <webResources>
            <resource>
                <!-- this is relative to the pom.xml directory -->
                <directory>target/grunt</directory>
            </resource>
        </webResources>
    </configuration>
</plugin>

全局配置也将应用于作为上述绑定的一部分执行的默认Maven War Plugin。

在上面的代码段中,我们对Maven War Plugin说,还要包含target/grunt文件夹中的资源。然后,该文件夹中存在的任何.jsp文件将添加到构建的webapp(作为文件夹和.war文件)并覆盖原始.jsp文件(正如您实际想要的那样)。