我需要知道在maven周期的哪个阶段,jsp被放在目标目录上,以及由哪个进程放置。
我使用grunt-maven-plugin
对我的.jsp
文件进行转换(如果你想知道的话,我会生成js脚本的插入)。
Grunt在一个临时目录中复制jsp文件,完成它的工作,并将更新后的jsp放在target/${project.build.name}目录中。(如果我只发射咕哝声,我可以检查它的工作情况)
我的问题是,更新后的文件被移动到同一存储库中的原始jsp覆盖。
如果我只启动grunt(我做一个mvn compile
,谁启动grunt任务),我可以检查我的grunt工作是否正常。但如果我执行mvn install
,文件将被覆盖。
我想我可以通过在原始jsp被移动后启动grunt来纠正它。
问题:您知道在maven周期的哪个阶段jsp被放在目标目录上吗?
顺便说一句,我的项目是来自maven工件webapp的一个webapp。
我需要知道在maven周期的哪个阶段,jsp被放在目标目录上,以及由哪个进程执行。
在package
阶段,Maven War插件及其war
目标。
打包war
后,Maven构建将根据默认的打包绑定,在package
阶段默认调用war:war
(Maven War插件的war
)。因此,无需在POM文件中明确指定它。
Maven War插件将
- 根据其
webappDirectory
配置条目的指定,在默认情况下在${project.build.directory}/${project.build.finalName}
下构建完整的Web应用程序 - 默认情况下,根据其
outputDirectory
配置条目的指定,将其打包为${project.build.directory}
下的.war
文件
我的问题是,更新后的文件被移动到同一存储库中的原始jsp覆盖。
在这种情况下,您遇到了文件冲突,同一目标文件夹中的相同文件(具有不同内容)(您提到的target/${project.build.name}
与上面默认的War Plugin outputDirectory相同)。
您可以将修改后的.jsp
文件重定向到另一个目录下,比如target/grunt
,然后配置Maven War插件也从该目录中获取资源。这些额外的资源将被添加到默认资源之后,并因此覆盖它们(在发生冲突的情况下)。
例如,您可以通过以下添加来配置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插件。
在上面的片段中,我们对Maven War插件说,还包括target/grunt
文件夹中的资源。然后,该文件夹中存在的任何.jsp
文件都将被添加到构建的Web应用程序中(作为文件夹和.war
文件),并覆盖原始的.jsp
文件(根据您的实际需要)。