эффективен ли maven-assembly-plugin в этом случае

У меня есть следующая структура проекта:

  1. Проект «родительский проект» не имеет исходного файла и имеет подпроекты «junit-wrapper», «child1-test» и «child2-test».
  2. Подпроект «junit-wrapper» имеет только исходный код java внутри src/main/java, и он в основном создан для переноса всех зависимостей и двоичных файлов в иерархию «родительский проект».
  3. Подпроект «child1-test» и «child2-test» не имеет исходных файлов и содержит только подпроекты «child1-env» и «child2-env».
  4. Подпроект «child1-env» и «child2-env» имеет только junits внутри src/test/java.

Я хочу создать супер банку (внутри junit-wrapper), создав родительский pom.xml

Я надеюсь, что это возможно с помощью maven-assembly-plugin, но не знаю, как это настроить в pom.xml. какими должны быть мои записи pom.xml или Assembly.xml(при использовании плагина), чтобы убедиться, что это достигнуто?

пожалуйста, предложите.

Спасибо.


person akhi    schedule 04.10.2012    source источник
comment
Нравится ли вам повторно использовать классы из junit-wrapper в других модулях/проектах?   -  person khmarbaise    schedule 04.10.2012


Ответы (2)


Чтобы создать банку, содержащую тестовые классы, лучшим решением является использование плагина maven-jar следующим образом:

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.2</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
</project>

В других модулях вы можете использовать тестовую банку через следующую зависимость:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project>
person khmarbaise    schedule 05.10.2012

Вы получите свой «uber-jar», когда включите эту конфигурацию в файл pom junit-wrapper:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.2.1</version>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Дескриптор сборки (assembly.xml) не нужен, поскольку дескриптор jar-with-dependencies уже доступен в плагине maven-assembly-plugin. Обратите внимание, что вы не должны запускать плагин сборки до фазы package. В противном случае код вашего модуля maven не будет упакован в вашу сборку.

person Stefan Ferstl    schedule 04.10.2012
comment
Кроме того, если вы хотите, чтобы тесты из child1-env и child2-env были включены в супербанку, вам придется объявить их как зависимости, и вам нужно будет убедиться, что вы создаете банки из тестового кода в этих два пакета. - person John Haager; 05.10.2012