我需要知道在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。
答案 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将
${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
文件(正如您实际想要的那样)。