Как исключить набор пакетов из maven build jar?
Это все, что мне нужно. Дополнительные сведения: У меня есть папка src/bootstrap/java и обычная папка src/main/java. По очевидным причинам каждый из них должен пойти в отдельную банку. Я смог создать бутстрап-банку, используя this:
<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>
Но регулярная банка все еще включает классы начальной загрузки. Я компилирую классы bootstrap с этим ответом.
Любой свет для создания myproject.jar БЕЗ классов начальной загрузки?
Ответы
Ответ 1
Вы должны использовать "default-jar" для 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
Я думаю, вы можете взглянуть на это, прежде чем принимать решение о создании двух банок из одного pom.
Лучшая практика Maven для создания нескольких банок с разными/фильтрованными классами
Если вы все еще решаете получить две банки, вы, вероятно, сможете это сделать, используя это. Вы должны указать правильные исключения.
<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>
Ответ 3
Возможно, используйте ProGuard? Это то, что я использую для удаления неиспользуемого кода. Он кажется, что вы можете добавить его в качестве плагина Maven.