преобразование существующего веб-проекта с использованием Maven - PullRequest
0 голосов
/ 27 сентября 2011

Я пытался преобразовать веб-проект, который создает файл войны, в maven. моя существующая структура проекта выглядит следующим образом -

MyWebProject | - WEB-INF / src - содержит несколько пакетов, таких как com.myweb.client, com.myweb.server и т. Д. - WEB-INF / test - содержит 1 пакет com.myweb.tests - web-scripts - содержит набор скриптов (просто папка; не в пути к классам) - misc-files1 - содержит наборы разных файлов 1 - misc-files2 - аналогично указанному выше

В настоящее время создается файл войны с использованием сценария ant, в результате чего структура файла войны выглядит следующим образом

myweb.war - Meta-INF (содержит только MANIFEST.MF) - WEB-INF - занятия - com.myweb.client - com.myweb.server и т. д. - веб-скрипты - misc-files1 - разное-файлы2

Я создал простой проект Maven с использованием simple-artifact и добавил свои пакеты. я использую плагин сборки maven для генерации файла войны и наборы файлов для фильтрации. но мои итоговые военные данные не так близки к тому, что я получаю с муравьем вот сокращенная версия моего файла assembly.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

  <id>assembler</id>
  <formats>
    <format>war</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
<dependencySet/>
</dependencySets>

<fileSets>

    <fileSet>
        <directory>src/main/java</directory>
        <outputDirectory>WEB-INF</outputDirectory>
        <includes>
        <include>**</include>
        </includes>        
    </fileSet>

    <fileSet>
        <directory>es</directory>
        <outputDirectory>resources1</outputDirectory>
        <includes>
        <include>**</include>
        </includes>        
    </fileSet>
    <fileSet>
        <directory>resources2</directory>
        <outputDirectory>resources2</outputDirectory>
        <includes>
        <include>**/*</include>
        </includes>        
    </fileSet>
    <fileSet>           
    <fileSet>
        <directory>test</directory>
        <outputDirectory>WEB-INF</outputDirectory>
        <includes>
        <include>**</include>
        </includes>        
    </fileSet>

  </fileSets>


</assembly>

Чтобы создать пользовательскую войну, есть плагин сборки правильный подход. Я всегда могу включить свой сценарий ant в pom, используя maven-antrun-plugin, но я хочу по возможности избегать использования ant. любые предложения.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Вы идете совсем не в том направлении. Сначала попробуйте ознакомиться с некоторыми основными учебными пособиями по веб-приложениям Maven. Затем вы должны увидеть некоторые четкие параллели между вашей сборкой Ant и жизненным циклом Maven и привязками плагинов по умолчанию. Когда вам будет удобнее, сначала позвольте Maven обрабатывать все, что он делает из коробки, такие как компиляция, тестирование и создание WAR. Попробуйте также перенести управление зависимостями в Maven. Если вам все еще нужен путь к классам, настроенный в Ant, используйте задачи Maven Ant , чтобы позволить Maven создать путь к классам для вашего сценария Ant. Оставьте любой пользовательский материал в файлах сборки Ant и вызывайте его с помощью плагина antrun из Maven до тех пор, пока вы не преобразуетесь в использование плагина Maven для него.

Редактировать: Похоже, ваша проблема в том, что у вас есть несколько каталогов, содержащих исходные файлы, которые необходимо объединить в войну. Это правильно? Простейшим решением было бы собрать их всех в одном месте - src / main / webapp - это соглашение Maven . Даже сборка Ant должна иметь как минимум такую ​​большую организацию. Если есть действительно веская причина, по которой ваши военные ресурсы разбросаны повсюду (я бы хотел это услышать), то вы можете использовать другой плагин, например плагин ресурсов , GMaven , или плагин antrun для копирования нескольких каталогов в каталог, где плагин war строит структуру каталогов war. Это известно как "webappDirectory" в плагине войны . Возможность использования плагина antrun восходит к моему первоначальному ответу на вызов фрагментов вашего существующего скрипта Ant из Maven. Если этот мультикаталог должен остаться и об этом уже позаботится Ant, преобразовать его в цель / задачу, которую также можно использовать из Maven. Насколько это возможно, позвольте повторно использовать пользовательские части вашей существующей сборки при внедрении Maven.

0 голосов
/ 27 сентября 2011

Вы должны использовать maven-war-plugin для этого.

...