2015-06-04 7 views
12

Я разрешаю Maven копировать некоторые файлы зависимостей в определенное место для проэкта GWT. maven-dependency-plugin выполняет эту работу и до сих пор работает. Единственная проблема в том, что я получаю сообщение об ошибке от Eclipse, который говорит:Maven: Артефакт еще не упакован

Artifact has not been packaged yet. When used on reactor artifact, copy should be executed after packaging: see MDEP-187.

Я попытался изменить <phase>, но это не сработало. Как я могу избавиться от этой ошибки и почему она существует, потому что Maven строит так, как предполагалось.

<plugins> 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>install</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.basedir}/war/WEB-INF/lib</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
+2

https://issues.apache.org/jira/browse/MDEP-187 все еще кажется активным. Может быть, вы можете попросить обходной путь? –

+1

@WimDeblauwe Создано 12/Ноя/08; Приоритет: майор ... ну это грустно .. но спасибо за намек! – displayname

+0

Возможный дубликат [Артефакт еще не упакован - maven-dependency-plugin] (http://stackoverflow.com/questions/26101135/artifact-has-not-been-packaged-yet-maven-dependency-plugin) –

ответ

11

У меня такая же ошибка, и я решил эту проблему обходным путем. Я скомпилировал и установил проект с maven в консоли вне eclipse ide. После того, как я обновил проект внутри eclise ide и ошибка исчезла.

+0

Этот вопрос старый, поэтому я больше не могу это пробовать. Поскольку у вас есть несколько голосов, я предполагаю, что ваше решение работает, поэтому я собираюсь принять этот ответ. – displayname

+0

@jkings, спасибо .. это сработал. –

2

Я решил установить фазу плагина на prepare-package. Я знаю, что это все еще обходное решение, но я думаю, что он чище, чем компилировать извне.

<plugins> 
     [...] 
     <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         [YOUR_CONFIGURATION] 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     [...] 
    </plugins> 

EDIT:

Это не в полной мере решить: иногда это работает, иногда нет.

Окончательное решение заключается в использовании Lifecycle Mapping Maven пустышки плагин через профиль затмение только Maven:

<profile> 
    <id>only-eclipse</id> 
    <activation> 
     <property> 
     <name>m2e.version</name> 
     </property> 
    </activation> 
    <build> 
     <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.eclipse.m2e</groupId> 
      <artifactId>lifecycle-mapping</artifactId> 
      <version>1.0.0</version> 
      <configuration> 
       <lifecycleMappingMetadata> 
        <pluginExecutions> 
         <pluginExecution> 
          <pluginExecutionFilter> 
           <groupId>org.apache.maven.plugins</groupId> 
           <artifactId>maven-dependency-plugin</artifactId> 
           <versionRange>${maven-dependency-plugin.version}</versionRange> 
           <goals> 
            <goal>copy-dependencies</goal> 
           </goals> 
          </pluginExecutionFilter> 
          <action> 
           <ignore /> 
          </action> 
         </pluginExecution> 
        </pluginExecutions> 
       </lifecycleMappingMetadata> 
      </configuration> 
     </plugin> 
     </plugins> 
     </pluginManagement> 
    </build> 
</profile> 
1

мне пришлось обернуть плагины тег под pluginManagement, чтобы сделать ошибку уйти.

<pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>3.0.0</version> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>package</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>../../lib/</outputDirectory> 
          <overWriteReleases>false</overWriteReleases> 
          <overWriteSnapshots>false</overWriteSnapshots> 
          <overWriteIfNewer>true</overWriteIfNewer> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
</pluginManagement> 
+0

работает и для меня –

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