2014-12-15 2 views
4

Я пытаюсь отлаживать проект Maven Webapp, используя Eclipse Luna, чтобы запустить его в Tomcat 8. К сожалению, временная метка сборки не будет решена во время фильтрации ресурсов, когда пытаясь развернуть его в Tomcat. Файл WAR, созданный Eclipse, разрешил его, но то, что он развертывает в Tomcat (с помощью опции «Запуск на сервере»), нет.maven.build.timestamp не разрешается в maven eclipse build, развернутом в tomcat

В моей pom.xml, я получил:

<properties> 
    <timestamp>${maven.build.timestamp}</timestamp> 
</properties> 

<build> 
    <finalName>rapid-installer</finalName> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
    </plugin> 
    </plugins> 
    <resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
    </resources> 
</build> 

И в файле свойств, у меня есть

build.date=${timestamp} 
+0

работает, если закрыть затмение и просто запустить команду в командной строке? Eclipse часто заменяет файлы maven копиями после обнаружения изменений. То, что часто помогает, - это очистить установку проекта, разрешить пересоздание eclipse и выполнить другую установку, чтобы применить фильтрацию. Возможно, можно настроить цель для копирования ресурсов, поэтому фильтрация работает, даже если eclipse выполняет эту работу (я думал, что видел такую ​​функцию). – wemu

+0

Спасибо за ответ. Если я создаю WAR и разворачиваю его в Tomcat вручную, фильтрация ресурсов будет работать, но если я развожу его из Eclipse, это не так. Это может быть ОК, но мне действительно нужно использовать отладчик на данный момент. – css

+0

Если я правильно помню, есть плагин отображения жизненного цикла, который настраивает плагины maven для выполнения, когда eclipse работает. Возможно, это просто работает сегодня, поскольку кажется, что они извлекли отображение жизненного цикла в «lifecycle-mapping-metadata.xml», см. Https://wiki.eclipse.org/M2E_compatible_maven_plugins. Я видел, что плагин отображения жизненного цикла настроен в файлах pom.xml. Не знаю, где это задокументировано:/ – wemu

ответ

5

Решение для меня состояло в том, чтобы добавить следующее в мой pom.xml, чтобы была доступна временная метка, что сделало ее так, чтобы приложение не разбилось при запуске в Tomcat.

<profiles> 
    <profile> 
    <id>m2e</id> 
    <activation> 
     <property> 
     <name>m2e.version</name> 
     </property> 
    </activation> 
    <properties> 
     <maven.build.timestamp>2014-01-01</maven.build.timestamp> 
    </properties> 
    </profile> 
</profiles> 

Теперь, когда приложение развертывается на сервере Tomcat через «Запуск на сервере» в Eclipse, он всегда показывает, что накопление метки времени. Для получения подробной информации о том, почему это необходимо сделать и как это работает: https://bugs.eclipse.org/bugs/show_bug.cgi?id=388874

1

Это нормально, к сожалению.

Развертывание приложения в Tomcat с использованием механизма WTP eclispe полностью обходит жизненный цикл maven. Это становится еще более раздражающим, когда вы начинаете использовать военные наложения и такие «причудливые» вещи, предлагаемые maven.

Единственным решением, до сих пор, является НЕ развертывание с использованием представлений WTP eclipse, но вместо этого использовать плагин для maven.

Смежные вопросы