Maximilian Novikov created MBUILDCACHE-35:
---------------------------------------------
Summary: Incorrect pom is put to local repo for module with
maven-shade-plugin
Key: MBUILDCACHE-35
URL: https://issues.apache.org/jira/browse/MBUILDCACHE-35
Project: Maven Build Cache Extension
Issue Type: Bug
Reporter: Maximilian Novikov
Original reporter: [email protected]
There is an issue with maven incremental build if module uses maven-shade
plugin. If user executes mvnw clean install command and module is not changed
then wrong pom file will be put into local maven repository and it will break
module dependencies.
Steps to reproduce:
# create a module with dependencies and with maven-shade plugin (see below)
# build module using incremental build: mvnw clean install (install command is
required to put artifact into local maven repo)
# change something in module to trigger incremental build (for instance some
symbols here <exclude>META-INF/test-run-01.txt</exclude>)
# build module again: mvnw clean install
# check that local repo has correct dependency reduced pom (ie pom file loaded
into the repo does not have dependencies org.apache.commons:commons-lang3)
{code:java}
[devbox ~/.m2/repository/com/db/test/mvnbuild/mvnbuild-test/1.0]$ ll
-rw-r--r--. 1 devbox users 716 Dec 13 09:49 maven-metadata-local.xml
-rw-r--r--. 1 devbox users 584570 Dec 13 09:49 mvnbuild-test-1.0.jar
-rw-r--r--. 1 devbox users 1512 Dec 13 09:49 mvnbuild-test-1.0.pom
-rw-r--r--. 1 devbox users 208 Dec 13 09:49 _remote.repositories
[devbox ~/.m2/repository/com/db/test/mvnbuild/mvnbuild-test/1.0]$ less
mvnbuild-test-1.0.pom
{code}
# do not change module and build it again: mvnw clean install
*Expected:* local repositiry should have dependency reduced pom
*Actual:* local repo has a pom file taken from source code ie with all
dependencies
As a result in class path there will be duplicated set of class files:
# from shaded module
# due to this defect from org.apache.commons:commons-lang3
*Original POM*
{code:java}
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.db.test.mvnbuild</groupId>
<artifactId>mvnbuild-test</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>MvnTest</name>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<includes>
<include>org.apache.commons:commons-lang3</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/test-run-01.txt</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>
</build>
</project>
{code}
*Dependency reduced POM*
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.db.test.mvnbuild</groupId>
<artifactId>mvnbuild-test</artifactId>
<name>MvnTest</name>
<version>1.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<includes>
<include>org.apache.commons:commons-lang3</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/test-run-01.txt</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>
</build>
</project>{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)