Распаковать зависимости и перепаковать классы используя maven?
Я пытаюсь распаковать артефакт maven A и упаковать его в новый файл jar в проекте maven B.
Распаковка файлов классов из артефакта A в:
<my.classes.folder>${project.build.directory}/staging</my.classes.folder>
отлично работает, используя это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.test</groupId>
<artifactId>mvn-sample</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${my.classes.folder}</outputDirectory>
<includes>**/*.class,**/*.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
В том же pom я теперь хочу создать дополнительный jar, содержащий распакованные классы:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classesdirectory>${my.classes.folder}</classesdirectory>
<classifier>sample</classifier>
</configuration>
</execution>
</executions>
</plugin>
Создан новый jar, но он не содержит классов из:
${my.classes.folder}
Это просто копия стандартного проекта JAR. Есть идеи?
Я пытался следовать этому руководству:
http://jkrishnaraotech.blogspot.dk/2011/06/unpack-remove-some-classes-and-repack.html
но это не работает.
2 ответа
В образце у вас есть <classesdirectory>
, документы имеют элемент как <classesDirectory>
, Чувствительность к регистру имеет значение, я думаю.
Я бы предложил вам использовать maven-shade-plugin
вместо.
Это сделает распаковку-переупаковку в тот же вызов.
Вы можете сделать что-то вроде этого, например:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>com.test:mvn-sample:1.0.0-SNAPSHOT</artifact>
<includes>
<include>**/*.class</include>
<include>**/*.xml</include>
</includes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>