2012-03-17 3 views
11

Это все, что мне нужно. Дополнительные сведения: У меня есть папка src/bootstrap/java и обычная папка src/main/java. По очевидным причинам каждый из них должен пойти в отдельную банку. Я был в состоянии генерировать загрузочную банку с помощью this:Как исключить набор пакетов из maven build jar?

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
     <id>only-bootstrap</id> 
     <goals><goal>jar</goal></goals> 
     <phase>package</phase> 
     <configuration> 
      <classifier>bootstrap</classifier> 
      <includes> 
      <include>sun/**/*</include> 
      </includes> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Но регулярные банки по-прежнему включают в себя классы начальной загрузки. Я компилирую классы начальной загрузки с помощью this answer.

Любой свет для создания myproject.jar БЕЗ классов начальной загрузки?

ответ

16

Вы должны использовать «по умолчанию-банку» для ID:

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
     <id>only-bootstrap</id> 
     <goals><goal>jar</goal></goals> 
     <phase>package</phase> 
     <configuration> 
      <classifier>bootstrap</classifier> 
      <includes> 
      <include>sun/**/*</include> 
      </includes> 
     </configuration> 
     </execution> 
     <execution> 
     <id>default-jar</id> 
     <phase>package</phase> 
     <goals> 
      <goal>jar</goal> 
     </goals> 
     <configuration> 
      <excludes> 
      <exclude>sun/**/*</exclude> 
      </excludes> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+2

Не могли бы вы сказать мне, какую команду вы использовали для запуска конкретной выполнения идентификатора. –

+0

Спасибо! В чем заключалась необходимость указывать 'default-jar'? Может ли maven-jar-plugin искать его? – asgs

0

Возможно использование ProGuard? Это то, что я использую для удаления неиспользуемого кода. Это seems, что вы можете добавить его в список плагинов Maven.

1

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

Maven best practice for generating multiple jars with different/filtered classes?

Если вы все-таки решили, чтобы получить две банки, вероятно, можно сделать это с помощью этого. Вы должны указать правильные исключения.

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>only-bootstrap</id> 
      <goals><goal>jar</goal></goals> 
      <phase>package</phase> 
      <configuration> 
       <classifier>only-library</classifier> 
       <includes> 
       <include>**/*</include> 
       </includes> 
       <excludes> 
       <exclude>**/main*</exclude> 
       </excludes> 
      </configuration> 
      </execution> 
      <execution> 
      <id>only-main</id> 
      <goals><goal>jar</goal></goals> 
      <phase>package</phase> 
      <configuration> 
       <classifier>everything</classifier> 
       <includes> 
       <include>**/*</include> 
       </includes> 
       <excludes> 
       <exclude>**/bootstrap*</exclude> 
       </excludes> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
Смежные вопросы