2013-09-24 6 views
0

У меня есть несколько модулей Maven проект, как это:Maven - Как настроить сборку зависимостей?

project 
    project-core 
    project-webapp 

project-core является зависимость project-webapp. При построении project-core я исключаю некоторые элементы из последней банки. Когда я создаю и развертываю весь проект с помощью maven (через m2eclipse), все в порядке.

Однако, если я создаю и развертываю с помощью WTP, фильтрация ресурсов пропускается.

Единственная работа, которую я нашел до сих пор, заключается в отключении разрешения рабочей области от m2eclipse. Таким образом, WTP строит финальную войну с банкой, созданной maven. Основным недостатком этого обходного пути является то, что я должен устанавливать, обновлять проект каждый раз, когда изменяю исходный код project-core.

Как заставить WTP отфильтровывать ресурсы от project-core?

проект/Проект-ядро/pom.xml

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>project</artifactId> 
     <groupId>com.company.project</groupId> 
     <version>1.0.0</version> 
    </parent> 

    <artifactId>project-core</artifactId> 
    <name>project-core</name> 
    <version>${version.project}</version> 
    <packaging>jar</packaging> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
       // (huge) dependencies list ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.3.1</version> 
       <configuration> 
        <excludes> 
         <exclude>file.properties</exclude> 
         <exclude>DIR/file.xml</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
       // repositories ... 
    </repositories> 
</project> 

РЕДАКТИРОВАТЬ:

Однако, если я создавать и развертывать с ВОС, фильтрация ресурсов пропускается.

На самом деле я не делал фильтрацию справа этап. Ресурсы отфильтровывались только во время создания банки. Благодаря @Samuel EUSTACHI, я теперь фильтрую ресурсы, когда они скопированы в папку target. Вот как я это сделал:

проект/проект-жильный/pom.xml

 <build> 
      <!-- 
        I removed completely the plugins node and 
        replace it with the resources node 
      --> 

      <resources> 
       <resource> 
       <directory>src/main/resources</directory> 
        <excludes> 
         <exclude>file.properties</exclude> 
         <exclude>DIR/file.xml</exclude> 
        </excludes> 
       </resource> 
      </resources> 
     </build> 
+0

Можете ли вы показать полные файлы pom? – khmarbaise

+0

@khmarbaise проверить мое обновление – Stephan

ответ

1

Мое предположение было бы, что ГУР не выполняет фактическую банку сборки, а работает с имеющимися ресурсами (вероятно, в цель).

Необычно исключить некоторые файлы из банки. Вы можете исключить эти файлы из предыдущих этапов (process-resources?) Или, если вам нужны только эти файлы для Unit Test, переместите их в тест.

Это действительно зависит от того, почему вы решили исключить их из банки (у вас должна быть веская причина, но это поможет узнать почему).

+0

Я попытался исключить файлы (расположенные в src/main/resources) из каталога 'target' через eclipse без везения. Файлы все равно попадают в целевой каталог. Я мог бы переместить эти файлы или src/main/resources, но мне это совсем не нравится, поскольку эти файлы являются подлинными ресурсами и они не могут быть в src/main/resources. На самом деле эти файлы являются образцами конфигурационных файлов для рабочей среды. У них уже есть их коллега в src/test/resources со специальными значениями только для целей тестирования. – Stephan

+0

Если ваши файлы являются подлинными ресурсами, но не являются частью какой-либо сборки или процесса (то есть для целей документации), вы можете исключить их следующим образом: http://maven.apache.org/plugins/maven-resources-plugin/examples/ include-exclude.html –

+1

В моих проектах эти виды производственных образцов не представлены в разделе src/main/resources.Я размещаю там только файлы, которые являются частью процесса сборки или нужны во время выполнения. –

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