Вопрос: Как скопировать зависимости к gae war / WEB-INF / lib


Я исхожу из муравьев, так что простите меня. Я понимаю, что здесь уже много вопросов о том, как использовать зависимости maven, но ни один из них, похоже, не говорит, как делать то, что нужно делать.

Вопрос 1 : В настоящее время, в сочетании с использованием maven-war-plugin, когда я запускаю mvn war: war, он создает папку войны в целевой папке.

Тем не менее, я хочу скопировать все банки зависимостей в war / WEB-INF / lib, настроенные плагином google eclipse (с включенным gae, gwt disabled), без перезаписывания баннеров, размещенных там плагином google eclipse.

Я не хочу устанавливать военный файл или военный каталог. Мне просто нужно скопировать / объединить все банки без gae с банками gae, так что, когда проект будет запущен как веб-приложение gae, Eclipse не будет жаловаться на ClassNotFoundException.

вопрос 2 : При использовании Ant в Eclipse я мог запускать объекты Ant в Eclipse.

Прямо сейчас, я должен выполнить команды mvn из окна оболочки (что взаимно забывает о существовании сеанса Eclipse). По-видимому, единственное, что делается автоматически, - это когда я обновляю зависимости.

Есть ли способ или любой плагин для eclipse, который позволил бы мне запускать mvn-цели в Eclipse?

Дополнительная информация :

mvn dependency:copy-dependencies продолжает копировать target/dependency каталог со следующим:

  <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>process-resources</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>false</overWriteSnapshots>
          <overWriteIfNewer>true</overWriteIfNewer>
          <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
        </configuration>
      </execution>
    </executions>
  </plugin>

Я даже пытался перейти на абсолютный путь

<outputDirectory>
  /home/geek/eclipse/workspace/Demo-autoshoppe/holycow
</outputDirectory>

Но каталог Holycow по-прежнему пуст, и mvn все еще продолжает копировать target/dependency каталог. Мое текущее решение - softlink target/dependency в виде war/WEB-INF/lib, что очень плохой клид. Почему maven не чувствителен к спецификации outputDirectory? Я использую maven 2.2 Ubuntu.


5


источник


Ответы:


У меня есть реальный ответ для вас, мой человек.

Используйте идентификатор выполнения «default-cli». Убедитесь, что вы используете Maven 2.2+. Этот exec-id применяется к командам командной строки mojo.

  <build>
    <pluginManagement>
      <plugins>
        <!-- Copy dependencies to war/WEB-INF/lib for GAE proj compliance. -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

Приветствия.


7



Ответчик ответил мне на этот ответ, который работает. Запустить последующие mvn build или mvn package но не прямо mvn dependency:copy-dependencies,

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>false</overWriteSnapshots>
          <overWriteIfNewer>true</overWriteIfNewer>
          <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
        </configuration>
      </execution>
    </executions>
  </plugin>

2



Что касается № 1: я бы предложил создать ваш проект maven, основанный на этом плагине и архетипе http://code.google.com/p/maven-gae-plugin/   (см. пример на основе GWT, если вы пишете приложение GWT для GAE).

Что касается №2: ознакомьтесь с плагином m2eclipse для полной интеграции maven в eclipse. Это написано Sonatype (создателями maven): http://m2eclipse.sonatype.org/


0