【问题标题】:war manifest gets created in multiple locations战争清单在多个位置创建
【发布时间】:2011-10-26 06:59:45
【问题描述】:

http://maven.apache.org/plugins/maven-war-plugin/manifest-mojo.html

当我通过 maven 运行上述目标时,它会在 /src/main/webapp/META-INF/MANIFEST.MF 下创建清单,并在创建战争期间正确地在目标文件夹下创建清单。

我希望插件不会在源目录下生成额外的工件,我应该如何防止这种情况发生在2.2.1 版本的maven-war-plugin

【问题讨论】:

  • 目前还没有maven-war-plugin2.2.1 版本。最新版本是2.1.1 - 我猜你说的是那个版本?

标签: jakarta-ee maven-2 maven war


【解决方案1】:

而不是使用war:manifest 目标,只需将以下配置添加到您的maven-war-plugin,如here 所述:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
    </configuration>
</plugin>

这将在执行war:war 目标期间自动生成MANIFEST.MF,仅在构建输出中,而不是在源目录中。

【讨论】:

  • 它不起作用,MANIFEST.MF 确实在源目录中创建。
  • 根据 maven-war-plugin 文档以及我们使用此配置的各种项目和测试,它不应该。您能否确认您的项目中没有任何其他配置会对此产生影响?另外,您正在执行什么 Maven 目标?
  • @Jason 你正在执行什么 Maven 目标?你能提供你的 POM 和项目布局吗?使用我上面提供的配置,只需运行 mvn clean package 应该只在您的构建目录和构建的 .war 文件中创建清单,而无需根据需要修改源的内容。我们在 WAR 中经常使用此配置,因此我对您有哪些额外配置或您可能正在运行的可能导致行为差异的目标感兴趣。
【解决方案2】:

它在您链接的那个页面上显示:“清单文件是在 warSourceDirectory 中创建的。”这是一个可配置的属性。如果你愿意,你可以改变它。目标中的那个可能只是 src 目录中的那个的 maven-resources-plugin 副本。

【讨论】:

  • 这是否意味着我可以将 warSourceDirectory 移动到目标以避免这种情况,它在清单生成期间是否会产生其他影响?
  • 我想不出有什么理由让您不想更改清单的生成位置,特别是因为插件可以选择让您这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
相关资源
最近更新 更多