2016-04-01 5 views
0

Существующий проект maven pom <packaging>pom</packaging>, который в настоящее время собирает и пакеты ресурсов, необходимо расширить, чтобы проверить некоторые ресурсы. В том же проекте я создал каталог java-source src/main/java, и там я создал небольшой класс java для проверки некоторых ресурсов. Кроме того, я сконфигурировал maven-компилятор и плагин exec-maven в pom.add build tasks to maven pom project

Класс java отлично работает в среде IDE, но он не работает, когда я делаю mvn clean install, он терпит неудачу, потому что он не может найти скомпилированный файл класса. Это связано с тем, что фаза компиляции/тестирования не доступна для проектов, упакованных в pom.

Мои вопросы:

  • Могу ли я изменить компилятор плагинов для выполнения (компиляции) в другой фазе, чем в фазе компиляции по умолчанию. (Я пытался с добавлением тега выполнения, но не успел)
  • Почему плагин exec-maven выполнен, потому что это было определено на этапе тестирования, которое, согласно документам, не является частью пакета pom.
  • Существуют ли другие возможности для выполнения этой задачи проверки в pom?

Изменение упаковки от pom to jar является политическим субоптимальным решением.

+1

Что-то по своей сути неправильно здесь. Проект 'pom' с компиляцией Java-кода? Что вы на самом деле пытаетесь сделать здесь? Какова ваша проблема и ваша конечная цель? Какова ваша текущая структура проекта? Релевантно: [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Tunaki

ответ

1

Да, вы можете настроить maven-compiler-plugin для запуска компиляции на фазе упаковки pom package.

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.5.1</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
       <phase>package</phase> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.4.0</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>java</goal> 
       </goals> 
       <phase>package</phase> 
      </execution> 
     </executions> 
     <configuration> 
      <mainClass>com.example.validate.App</mainClass> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
+3

Это злоупотребление, буквально. Фаза 'package' не предназначена для компиляции источников. – Tunaki