Eclipse, Maven и неправильный файл MANIFEST.MF используется

На этот раз у меня возникла проблема с запуском моего проекта веб-приложения в Eclipse.

Каждый раз, когда я фиксирую свое приложение в 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>

Я пробовал почти все предложения, которые я искал до сих пор, и ничего не работает :(

Пожалуйста помоги!

Заранее спасибо Том


person T.Fruba    schedule 12.12.2018    source источник


Ответы (1)


Хорошо,

Наконец-то я нашел решение. Оказалось, что мне просто нужно просто скопировать сгенерированный файл MANIFEST.MF из сгенерированной выходной папки wtp в мой проект META-INF.

Во время сборки Jenkins - файл все равно перезаписывается сгенерированным, поэтому кажется, что это не вредит проекту.

person T.Fruba    schedule 13.12.2018
comment
У меня аналогичная проблема с проектами веб-приложений Java NetBeans и Maven. Отладка использует папку target / Project-version, созданную на этапе пакета до создания файла .war. В .war есть META-INF / MANIFEST.MF, созданный архивом, вызываемым maven-war-plugin во время упаковки, но он не создает его в целевой / Project-версии. Мне нужен манифест, созданный там или созданный ранее с правильными значениями. - person jla; 20.06.2019