Подтвердить что ты не робот

Eclipse + Maven + Динамический веб-проект → Maven перезаписывает сборку развертывания

Резюме

В Eclipse, когда "Maven- > Update Project Configuration" "Maven Dependencies" удаляется из "сборки развертывания" моего проекта.

Подробнее

Я начал с предварительно сконфигурированного проекта Eclipse: File- > New- > Dynamic Web Project- > JavaServer Face v2.0 Project. Чтобы удалить "волшебство", я преобразовал его в проект Maven: Configure- > Convert to Maven.

pom.xml содержит следующее:

<build>
    <finalName>jsf-facelets-tutorial</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webXml>WebContent/WEB-INF/web.xml</webXml>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.0.5</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.0.5</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

Затем, чтобы убедиться, что зависимости Maven копируются на "WEB-INF/lib/" перед развертыванием, Я добавил их в проект "Сборка развертывания": "Свойства проекта" → "Развертывание сборки". Для получения дополнительной информации см. Этот вопрос: Eclipse + Maven + JavaServer Faces → ClassNotFoundException: StartupServletContextListener.

У меня есть две связанные проблемы.

Проблемы

(1) Когда я "Project- > Maven- > Update Project Configuration", "Maven Dependencies" удаляется из моей "сборки развертывания". Есть ли способ остановить это, возможно, через какой-то плагин Maven?

(2) Когда я строю .war изнутри Eclipse, все в порядке, в Tomcat отлично работает .war. Но когда я строю его из командной строки с Maven, mvn clean compile war:war, файлы .html из "WebContent/" не добавляются в .war. Опять же, какие настройки/плагины Maven мне нужно исправить?

FYI, это очень простое приложение... просто страница входа и приветственная страница.

Если есть дополнительные сведения, которые я должен предоставить (web.xml, faces-config-xml, login.xhtml), дайте мне знать, и я добавлю их.

Спасибо

- EDIT -

Версия Eclipse: 3.6.2

Eclipse m2e версия: 1.0.1

Версия Apache Maven: 2.2.1

(1) Решение

Обновлен до Eclipse Java EE 3.7.2 (Indigo). Теперь также используйте m2e-wtp Интеграция Maven для плагина Eclipse WTP

(2) Решение

Создал новый проект Maven из archetype, затем Eclipse- > Import- > Existing Maven Project. С новой версией Eclipse и m2e-wtp перспектива Java EE в Eclipse хорошо работает со стандартной структурой каталогов Maven

Теперь pom.xml проще:

<build>
    <finalName>jsf-facelets-tutorial</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.0.5</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.0.5</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>
4b9b3361

Ответ 1

Я бы рекомендовал перейти на Eclipse 3.7.x(Indigo), который имеет лучшую поддержку для m2e, а также позволяет использовать Maven Integration для WTP (отдельная установка), что должно сделать многое намного проще. Я думаю, что большинство ваших проблем нужно решить, обновив Индиго.

Установить ссылку: http://marketplace.eclipse.org/node/96737

Также смотрите здесь: Проекты Maven/Tomcat в Eclipse Indigo/3.7

Edit Поместите свои веб-ресурсы под WebContent, а затем добавьте, что в качестве каталога в плагине WAR может быть решение. Чистым способом было бы иметь их под src/main/resources или src/main/webapp, и они должны включаться автоматически в файл WAR. WebContent не является одним из стандартных каталогов Maven.