2016-05-23 2 views
1

Я получаю следующую ошибку. Это потому, что install_path не был установлен? Если да, значит ли это, что при использовании профиля плагины по умолчанию не выполняются (тот, который устанавливает install_path)?Выполняются ли родительские плагины по умолчанию при использовании дочернего профиля в maven?

Исполнение:

mvn clean install site -Pfull

Ошибка:

Не удалось выполнить голевые org.apache.maven.plugins: Maven-плагин очистки: 2,5: чистый (clean-deploy-folder) в проекте bo-full: отсутствующий базовый каталог для набор файлов: null (включено: [], исключено: [])

Родитель:

<project> 
    <plugins> 
     <plugin> 
      <!-- Workaround maven not being able to set a property conditionally based on environment variable --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.8</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <exportAntProperties>true</exportAntProperties> 
         <target> 
          <property environment="env"/> 
          <condition property="install.path" value="${env.SERVER_HOME}" else="C:\MY_SERVER"> 
           <isset property="env.SERVER_HOME" /> 
          </condition> 
          <echo message="${install.path}"/> 
         </target> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
... 

Детский:

<project> 
    <profiles> 
     <profile> 
      <id>full</id> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-clean-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>clean-deploy-folder</id> 
           <phase>pre-site</phase> 
           <goals> 
            <goal>clean</goal> 
           </goals> 
           <configuration> 
            <excludeDefaultDirectories>true</excludeDefaultDirectories> 
            <filesets> 
             <fileset> 
              <directory>${install.path}</directory> 
             </fileset> 
            </filesets> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
... 

ответ

0

1) плагины по умолчанию должны быть выполнены даже при использовании профиля. Пожалуйста, проверьте, что это происходит, следуя журналу сборки - каждое выполнение плагина регистрируется maven, даже если сам плагин ничего не регистрирует.

2) Вы должны продолжать выполнять очистку в том же проекте/модуле Maven, что и выполнение, которое создает свойство. Одна из причин заключается в том, что ваш дочерний модуль может быть затем построен отдельно (он будет использовать родительский pom.xml из локального/удаленного репозитория, если он доступен). Также возможно, что свойство не будет надлежащим образом распространяться в конструкции реактора по любой причине.

3) Если проблема в том, что на самом деле происходит распространение собственности и плагин antrun, вы можете заменить свое исполнение antrun на профиль Maven. Это должно быть примерно так:

<properties> 
    <!-- default value goes here: --> 
    <install.path>C:\MY_SERVER</install.path> 
</properties> 

<profiles> 
    <profile> 
    <id>env</id> 
    <activation> 
     <property> 
     <!-- activate this profile when property is specified: --> 
     <name>env.SERVER_HOME</name> 
     </property> 
    </activation> 
    <properties> 
     <!-- override default property value: --> 
     <install.path>${env.SERVER_HOME}</install.path> 
    </properties> 
    </profile> 
</profiles> 

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

  • Нет связанных вопросов^_^