【问题标题】:Eclipse, Maven and incorrect MANIFEST.MF file being used正在使用 Eclipse、Maven 和不正确的 MANIFEST.MF 文件
【发布时间】:2019-05-13 18:27:12
【问题描述】:

这次我在 Eclipse 中运行我的 Web App 项目时遇到了问题。

每当我将我的应用程序提交到 SVN 时,然后使用 Jenkins 构建它并部署到 Tomcat 容器 - 应用程序运行良好,并且使用了正确的 MANIFEST.MF。

但是,当我想在 Eclipse 中调试它(使用 Tomcat 8.5 容器)时 - 使用了一个默认清单文件,而不是包含我来自 pom.xml 的自定义属性的清单。

我在 pom.xml 中定义了一些关于应用程序名称、版本等的变量。清单文件正在 /target/generated-resources/m2e-wtp/webResources/META-INF/MANIFEST.MF 中生成。此文件包含我的所有自定义属性。

但是当我打电话时

resources = getClass().getClassLoader()
                  .getResources("META-INF/MANIFEST.MF");

返回的路径是:/META-INF/MANIFEST.MF。该文件确实存在,但几乎是空的:

清单版本:1.0

类路径:

这是我的 pom.xml:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <!-- Exclude an unnecessary file generated by the GWT compiler. -->
                <!-- <packagingExcludes>WEB-INF/classes/VAADIN/widgetsets/WEB-INF/**</packagingExcludes>-->
                <manifest>
                    <addClasspath>true</addClasspath>
                    <addDefaultImplementationEntries>false</addDefaultImplementationEntries>
                </manifest>
                <archive>
                    <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                    <manifestEntries>
                        <Specification-Title>${project.name}</Specification-Title>
                        <Specification-Version>${project.version}</Specification-Version>
                        <App-Version>${build.version}</App-Version>
                        <Build-Number>${build.number}</Build-Number>
                        <SVN-Revision>${rev.number}</SVN-Revision>
                        <Sys-Name>${sys.name}</Sys-Name>
                        <Sys-Full-Name>${sys.full.name}</Sys-Full-Name>
                    </manifestEntries>
                </archive>
                <!-- <packagingExcludes>WEB-INF/classes/META-INF/MANIFEST.MF</packagingExcludes> -->
            </configuration>
        </plugin>

到目前为止,我已经尝试了几乎所有我在谷歌上搜索过的建议,但没有任何效果:(

请帮忙!

提前谢谢你 汤姆

【问题讨论】:

    标签: eclipse maven manifest.mf


    【解决方案1】:

    好的,

    我终于找到了解决方案。原来我只需要简单地将生成的 MANIFEST.MF 文件从生成的 wtp 输出文件夹复制到我的项目 META-INF。

    在 Jenkins 上构建期间 - 该文件无论如何都会被生成的文件覆盖,因此这似乎对项目没有任何伤害。

    【讨论】:

    • 我在 NetBeans 和 Maven Java Web 应用程序项目中遇到了类似的问题。 Debug 使用在创建 .war 文件之前在 package 阶段创建的 target/Project-version 文件夹。 .war 具有 META-INF/MANIFEST.MF,由 maven-war-plugin 在打包期间调用的存档创建,但它不会在目标/项目版本中创建相同的文件。我需要在那里创建的清单,或者之前使用正确的值创建的清单。
    猜你喜欢
    • 2013-02-18
    • 2016-12-19
    • 2012-05-08
    • 2011-07-29
    • 2019-01-19
    • 2010-11-18
    • 1970-01-01
    • 2011-11-04
    • 2019-01-22
    相关资源
    最近更新 更多