我需要知道在maven循环的哪个阶段将jsp放在目标目录上,以及通过哪个过程。
我使用grunt-maven-plugin
对我的 .jsp
文件进行转换(如果您想知道,我会生成 js 脚本的插入)。
Grunt 在临时目录中复制 jsp 文件,执行其工作并将更新后的 jsp 放在 target/${project.build.name} 目录中。 (如果我只启动 grunt,我可以检查它的工作情况)
我的问题是更新的文件被移动到同一存储库的原始 jsp 覆盖。
如果我只启动 grunt(我执行 mvn 编译
,它启动 grunt 任务),我可以检查我的 grunt 工作是否正常。但如果我执行 mvn install
,这些文件就会被覆盖。
我想我可以通过在移动原始jsp后启动grunt来纠正它。
问题:你知道jsp在maven周期的哪个阶段被放到目标目录中吗?
顺便说一句,我的项目是来自 Maven Artifact webapp 的 web 应用程序。
最佳答案
I need to know during which phase of the maven cycle the jsp are put on the target directory, and by which process.
在 Maven War Plugin 的 package
阶段及其 war
目标。
打包 war
后,Maven 构建将默认调用 war:war
(Maven 的 war
War Plugin)在package
阶段,根据 default packaging bindings 。因此,无需在 POM 文件中显式指定它。
Maven War 插件将
- 默认情况下在
${project.build.directory}/${project.build.finalName}
下构建完整的 Web 应用程序,如其webappDirectory
所指定的那样配置条目 - 默认将其打包为
${project.build.directory}
下的.war
文件,由其outputDirectory
指定配置条目
My issue is that the updated file is overwritten by the original jsp who is moved on this same repository.
在这种情况下,您会遇到文件冲突,同一目标文件夹中的相同文件(具有不同的内容)(您提到的 target/${project.build.name}
与上面默认的 War Plugin 输出目录)。
您可以将修改后的 .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>
全局配置还将应用于作为上述绑定(bind)的一部分执行的默认 Maven War 插件。
在上面的代码片段中,我们要求 Maven War 插件也包含来自 target/grunt
文件夹的资源。该文件夹中存在的任何 .jsp
文件都将添加到构建的 Web 应用程序(作为文件夹和 .war
文件)并覆盖原始 .jsp
> 文件(如您实际想要的)。
关于java - 在哪个maven阶段将jsp放在目标上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380386/