2010-02-22 3 views
3

Я использую antrun плагин для удаления и перемещения некоторых файлов свойств в зависимости от профиля, который используется:Maven: удаленные файлы (antrun) еще в финале войны файл

<plugin> 
<artifactId>maven-antrun-plugin</artifactId> 
<executions> 
    <execution> 
     <phase>compile</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <tasks> 
       <delete> 
        <fileset dir="${project.build.outputDirectory}/com/.../props"> 
         <exclude name="pm-web-${profile.id}.xml" /> 
        </fileset> 
       </delete> 
       <move file="${project.build.outputDirectory}/com/.../props/pm-web-${profile.id}.xml" 
        tofile="${project.build.outputDirectory}/com/.../props/pm-web.xml" /> 
      </tasks> 
     </configuration> 
    </execution> 
</executions> 

Когда я проверить target/classes Я вижу, что «нежелательные» файлы свойств были удалены правильно и что задача перемещения также была правильно выполнена. Однако, когда я смотрю на встроенный военный файл, я вижу, что удаленные файлы все еще там (перемещенный файл в порядке в войне).

Я не понимаю, как это возможно; Я предполагаю, что плагин войны в основном разбивает целевую папку? Поскольку файлы были правильно удалены из целевой папки, я бы ожидал, что они тоже не войдут в войну.

Чтобы усложнить ситуацию (извините) Я заметил, что удаление иногда работает частично, что означает: иногда некоторые папки (не все) были «удалены из войны».

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

спасибо за любую помощь,
Стейн

+0

Что произойдет, если вы запустите 'MVN чистую package'? –

+0

Паскаль, это работает! Однако я не понимаю, почему; Я попробовал очистить до, но не в одной команде (сначала очистите, а затем пакет). Я бы попросил его работать даже без чистого. Есть идеи, что может быть причиной? –

ответ

1

Война харизмы строит веб-приложение в каталоге ${project.build.directory}/${project.build.finalName} перед создать .war архив. Возможно, ваши файлы свойств были там до добавления материала antrun. В этом случае удаление файла свойств с target/classes не удаляло их с ${project.build.directory}/${project.build.finalName}, и файлы все еще попадали в окончательный .war. Но, возможно, я слишком много догадываюсь, и я совершенно неправ. Посмотрите, сможете ли вы воспроизвести проблему сейчас, когда вы очистили все.

+0

Действительно, если я делаю чистый и строгий профиль1, тогда только войны с войной будут только свойства для профиля1. Если я затем сделаю сборку для профиля2 (с очисткой), то свойства для профиля 1 и профиля2 находятся в состоянии войны. Поэтому я предполагаю, что я просто буду выполнять чистый пакет каждый раз. tx! –

0

изменение Try

<phase>compile</phase> 

с

<phase>prepare-package</phase>