maven:war:即使内容不变,战争也会重建战争 - 为什么?

时间:2012-02-11 15:19:28

标签: maven war

当我尝试从netbeans构建耳朵项目时,为什么maven ear plugin会运行战争:war(插件目标)

我的过程:

我右键单击ear项目(列出了war依赖项),然后首先单击Clean,然后右键单击它并选择Build with Dependencies。然后它使用战争再次建立战争:战争,它需要时间。即使战争没有变化,但会重新创造它。

这就是它所说的:

  

----------------------------------------------- -------------------------建立finweb 1.0-SNAPSHOT   -------------------------------------------------- ---------------------- org.netbeans.external的POM:jdom-1.0:jar:RELEASE71缺少,   没有可用的依赖信息POM for   缺少com.ibm:com.ibm.mq:jar:6.0.2.5,没有依赖信息   可用缺少com.ibm:com.ibm.mqbind:jar:6.0.2.5的POM,   没有可用的依赖信息POM for   net.sf.saxon:saxon:jar:10.0-b19丢失,没有依赖信息   可用

     

[依赖性:复制]

     

[resources:resources]使用'UTF-8'编码复制过滤   资源。跳过不存在的resourceDirectory   C:\贝塔\鳍\ finweb \ SRC \主\资源

     

[compiler:compile]无需编译 - 所有类都是最新的

     

[resources:testResources]使用'UTF-8'编码来复制过滤的   资源。跳过不存在的resourceDirectory   C:\贝塔\鳍\ finweb \ SRC \测试\资源

     

[compiler:testCompile]无需编译 - 所有类都是最新的

     

[surefire:test]没有测试可以运行。 Surefire报告目录:   C:\贝塔\鳍\ finweb \目标\万无一失的报告

     

----------------------------------------------- --------测试   -------------------------------------------------- -----没有测试可以运行。

     

结果:

     

测试运行:0,失败:0,错误:0,跳过:0

     

[war:war]打包webapp组装webapp [finweb] in   [C:\ Beta \ fin \ finweb \ target \ finweb-1.0-SNAPSHOT]处理战争   项目复制webapp资源   [C:\ Beta \ fin \ finweb \ src \ main \ webapp] Webapp汇编于[109467   msecs]建立战争:   C:\ Beta \ fin \ finweb \ target \ finweb-1.0-SNAPSHOT.war WEB-INF \ web.xml   已添加,跳过

     

[install:install]安装   C:\ Beta \ fin \ finweb \ target \ finweb-1.0-SNAPSHOT.war到C:\ Documents   和   Settings.m2 \库\ COM \比较\ finweb \ 1.0-SNAPSHOT \ finweb-1.0-SNAPSHOT.war   将C:\ Beta \ fin \ finweb \ pom.xml安装到C:\ Documents和   设置\ 5510041.m2 \库\ COM \排版\ finweb \ 1.0-SNAPSHOT \ finweb-1.0-SNAPSHOT.pom

因此,如果没有什么可以编译的话,为什么如果它已经制作并且没有任何变化,它会再次制造战争。这是默认行为,看看编译:编译时如果没有任何需要它不编译那么为什么战争:战争做到了,它是不是很聪明,能做到这一点吗?

如果我错了,请纠正我

提前致谢..

赛。

2 个答案:

答案 0 :(得分:3)

这可以被视为解决方法 以下配置将加快您的构建时间。

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-war-plugin</artifactId>
 <version>2.4</version>
 <configuration>
  <useCache>true</useCache>
  <recompressZippedFiles>false</recompressZippedFiles>
 </configuration>
</plugin>

参考:https://maven.apache.org/plugins/maven-war-plugin/war-mojo.html

此外,我期待着轻松跳过战争的方式:来自maven默认构建生命周期的战争阶段。

答案 1 :(得分:1)

您的关注点可以被理解。但原则上maven-war-plugin并不知道生成的WAR工件将与之前构建的工件相同,因为:

  • 您可以定义包含当前构建时间的MANIFEST条目。
  • 您可以启用不同的配置文件,这将完全更改图片。
  • 其他插件(如maven-ant-plugin,maven-dependency-plugin)可能会根据一些不断变化的条件(例如来自命令行的属性)向目标目录添加内容。

因此每次重建战争都更安全。在现代平台上,这实际上可以忽略不计。