Как скопировать зависимости в gae war / WEB-INF / lib - PullRequest
5 голосов
/ 06 августа 2010

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

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

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

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

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

Прямо сейчас я должен выполнять команды mvn из окна оболочки (котороевзаимно забывает о существовании сеанса 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?Я использую Ubuntu Maven 2.2.

Ответы [ 3 ]

7 голосов
/ 12 октября 2010

У меня есть настоящий ответ для вас, мой мужчина.

Использовать идентификатор выполнения "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>

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

2 голосов
/ 14 августа 2010

Сотрудник отправил мне по электронной почте этот ответ, который работает.Инициируйте последующее действие через 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>
0 голосов
/ 07 августа 2010

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

Относительно # 2: Проверьте плагин m2eclipse для полной интеграции Maven в Eclipse.Это написано Sonatype (создатели Maven): http://m2eclipse.sonatype.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...