You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2020/01/04 20:38:28 UTC
[maven-shade-plugin] 01/01: [MSHADE-340] - Shaded test jar artifact
is not attached to the project
This is an automated email from the ASF dual-hosted git repository.
khmarbaise pushed a commit to branch peterdemaeyer-MSHADE-340_shadedTestJarArtifactAttached
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
commit 62efa683031c73c3f2172cdee36e7a2799eb9a74
Author: Peter De Maeyer <pe...@gmail.com>
AuthorDate: Wed Dec 25 20:30:16 2019 +0100
[MSHADE-340] - Shaded test jar artifact is not attached to the project
---
.../api/pom.xml | 32 +++++
.../api/src/main/java/Api.java | 25 ++++
.../api/src/test/java/ApiTest.java | 28 +++++
.../impl/pom.xml | 43 +++++++
.../impl/src/main/java/Impl.java | 25 ++++
.../impl/src/test/java/ImplTest.java | 28 +++++
.../pom.xml | 104 ++++++++++++++++
.../uber-user/pom.xml | 68 +++++++++++
.../uber-user/src/main/java/UberUser.java | 24 ++++
.../uber-user/src/test/java/UberUserTest.java | 30 +++++
.../uber/pom.xml | 74 ++++++++++++
.../uber/src/main/java/Uber.java | 25 ++++
.../uber/src/test/java/UberTest.java | 25 ++++
.../verify.groovy | 132 +++++++++++++++++++++
.../apache/maven/plugins/shade/mojo/ShadeMojo.java | 6 +
15 files changed, 669 insertions(+)
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/pom.xml b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/pom.xml
new file mode 100644
index 0000000..6b6d7e7
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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>
+ <parent>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-parent</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>mshade-340-api</artifactId>
+</project>
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/main/java/Api.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/main/java/Api.java
new file mode 100644
index 0000000..5900a13
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/main/java/Api.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Production API class.
+ */
+public class Api
+{
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/test/java/ApiTest.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/test/java/ApiTest.java
new file mode 100644
index 0000000..53b3902
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/api/src/test/java/ApiTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Test API class.
+ */
+public class ApiTest
+{
+ public static void main(String[] args) {
+ new Api();
+ }
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/pom.xml b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/pom.xml
new file mode 100644
index 0000000..8137187
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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>
+ <parent>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-parent</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>mshade-340-impl</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/main/java/Impl.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/main/java/Impl.java
new file mode 100644
index 0000000..a2e588b
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/main/java/Impl.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Production implementation class.
+ */
+public class Impl extends Api
+{
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/test/java/ImplTest.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/test/java/ImplTest.java
new file mode 100644
index 0000000..bd2bf41
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/impl/src/test/java/ImplTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Test implementation class.
+ */
+public class ImplTest extends ApiTest
+{
+ public static void main(String[] args) {
+ new Impl();
+ }
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/pom.xml b/src/it/MSHADE-340_shadedTestJarArtifactAttached/pom.xml
new file mode 100644
index 0000000..6b2fc15
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/pom.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-parent</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0</version>
+ <modules>
+ <module>api</module>
+ <module>impl</module>
+ <module>uber</module>
+ <module>uber-user</module>
+ </modules>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ <version>1.0</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-impl</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-impl</artifactId>
+ <version>1.0</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-uber</artifactId>
+ <version>1.0</version>
+ <classifier>jack-of-all</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-uber</artifactId>
+ <version>1.0</version>
+ <type>test-jar</type>
+ <classifier>jack-of-all-tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>jar</goal>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>jar</goal>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/pom.xml b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/pom.xml
new file mode 100644
index 0000000..972eb5c
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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>
+ <parent>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-parent</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>mshade-340-uber-user</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-uber</artifactId>
+ <type>jar</type>
+ <classifier>jack-of-all</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-uber</artifactId>
+ <type>test-jar</type>
+ <classifier>jack-of-all-tests</classifier>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>@project.version@</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <shadedArtifactAttached>true</shadedArtifactAttached>
+ <shadedClassifierName>jack-of-all</shadedClassifierName>
+ <shadeTestJar>true</shadeTestJar>
+ <createSourcesJar>true</createSourcesJar>
+ <createTestSourcesJar>true</createTestSourcesJar>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/main/java/UberUser.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/main/java/UberUser.java
new file mode 100644
index 0000000..1697f78
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/main/java/UberUser.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public class UberUser
+{
+ Api api;
+ Impl impl;
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/test/java/UberUserTest.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/test/java/UberUserTest.java
new file mode 100644
index 0000000..7c5715b
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber-user/src/test/java/UberUserTest.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * MSHADE-340 The fact that this class compiles verifies the fix.
+ * Without the fix, the (test) dependency cannot be found and compilation fails.
+ * Even though the file exists, it is not correctly attached to the project.
+ */
+public class UberUserTest
+{
+ UberUser uberUser;
+ ApiTest apiTest;
+ ImplTest implTest;
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/pom.xml b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/pom.xml
new file mode 100644
index 0000000..932efb9
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<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>
+ <parent>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-parent</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>mshade-340-uber</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-api</artifactId>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.stj</groupId>
+ <artifactId>mshade-340-impl</artifactId>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>@project.version@</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <shadedArtifactAttached>true</shadedArtifactAttached>
+ <shadedClassifierName>jack-of-all</shadedClassifierName>
+ <shadeTestJar>true</shadeTestJar>
+ <createSourcesJar>true</createSourcesJar>
+ <createTestSourcesJar>true</createTestSourcesJar>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/main/java/Uber.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/main/java/Uber.java
new file mode 100644
index 0000000..05fd6da
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/main/java/Uber.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Proper class of the uber project.
+ */
+public class Uber
+{
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/test/java/UberTest.java b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/test/java/UberTest.java
new file mode 100644
index 0000000..68e2a49
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/uber/src/test/java/UberTest.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Proper test of the uber project.
+ */
+public class UberTest
+{
+}
diff --git a/src/it/MSHADE-340_shadedTestJarArtifactAttached/verify.groovy b/src/it/MSHADE-340_shadedTestJarArtifactAttached/verify.groovy
new file mode 100644
index 0000000..e469af0
--- /dev/null
+++ b/src/it/MSHADE-340_shadedTestJarArtifactAttached/verify.groovy
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+def originalUberJar = new File( basedir, "uber/target/mshade-340-uber-1.0.jar" )
+def jackOfAllUberJar = new File( basedir, "uber/target/mshade-340-uber-1.0-jack-of-all.jar" )
+def originalUberTestJar = new File ( basedir, "uber/target/mshade-340-uber-1.0-tests.jar" )
+def jackOfAllUberTestJar = new File ( basedir, "uber/target/mshade-340-uber-1.0-jack-of-all-tests.jar" )
+def originalUberSourcesJar = new File( basedir, "uber/target/mshade-340-uber-1.0-sources.jar" )
+def jackOfAllUberSourcesJar = new File( basedir, "uber/target/mshade-340-uber-1.0-jack-of-all-sources.jar" )
+def originalUberTestSourcesJar = new File ( basedir, "uber/target/mshade-340-uber-1.0-test-sources.jar" )
+def jackOfAllUberTestSourcesJar = new File ( basedir, "uber/target/mshade-340-uber-1.0-jack-of-all-test-sources.jar" )
+
+assert originalUberJar.exists()
+assert jackOfAllUberJar.exists()
+assert originalUberTestJar.exists()
+assert jackOfAllUberTestJar.exists()
+assert originalUberSourcesJar.exists()
+assert jackOfAllUberSourcesJar.exists()
+assert originalUberTestSourcesJar.exists()
+assert jackOfAllUberTestSourcesJar.exists()
+
+def originalUberJarFile = new java.util.jar.JarFile( originalUberJar )
+try
+{
+ assert null == originalUberJarFile.getJarEntry( "Api.class" )
+ assert null == originalUberJarFile.getJarEntry( "Impl.class" )
+ assert null != originalUberJarFile.getJarEntry( "Uber.class" )
+}
+finally
+{
+ originalUberJarFile.close()
+}
+
+def jackOfAllUberJarFile = new java.util.jar.JarFile( jackOfAllUberJar )
+try
+{
+ assert null != jackOfAllUberJarFile.getJarEntry( "Api.class" )
+ assert null != jackOfAllUberJarFile.getJarEntry( "Impl.class" )
+ assert null != jackOfAllUberJarFile.getJarEntry( "Uber.class" )
+}
+finally
+{
+ jackOfAllUberJarFile.close()
+}
+
+def originalUberTestJarFile = new java.util.jar.JarFile( originalUberTestJar )
+try
+{
+ assert null == originalUberTestJarFile.getJarEntry( "ApiTest.class" )
+ assert null == originalUberTestJarFile.getJarEntry( "ImplTest.class" )
+ assert null != originalUberTestJarFile.getJarEntry( "UberTest.class" )
+}
+finally
+{
+ originalUberTestJarFile.close()
+}
+
+def jackOfAllUberTestJarFile = new java.util.jar.JarFile( jackOfAllUberTestJar )
+try
+{
+ assert null != jackOfAllUberTestJarFile.getJarEntry( "ApiTest.class" )
+ assert null != jackOfAllUberTestJarFile.getJarEntry( "ImplTest.class" )
+ assert null != jackOfAllUberTestJarFile.getJarEntry( "UberTest.class" )
+}
+finally
+{
+ jackOfAllUberTestJarFile.close()
+}
+
+def originalUberSourcesJarFile = new java.util.jar.JarFile( originalUberSourcesJar )
+try
+{
+ assert null == originalUberSourcesJarFile.getJarEntry( "Api.java" )
+ assert null == originalUberSourcesJarFile.getJarEntry( "Impl.java" )
+ assert null != originalUberSourcesJarFile.getJarEntry( "Uber.java" )
+}
+finally
+{
+ originalUberSourcesJarFile.close()
+}
+
+def jackOfAllUberSourcesJarFile = new java.util.jar.JarFile( jackOfAllUberSourcesJar )
+try
+{
+ assert null != jackOfAllUberSourcesJarFile.getJarEntry( "Api.java" )
+ assert null != jackOfAllUberSourcesJarFile.getJarEntry( "Impl.java" )
+ assert null != jackOfAllUberSourcesJarFile.getJarEntry( "Uber.java" )
+}
+finally
+{
+ jackOfAllUberSourcesJarFile.close()
+}
+
+def originalUberTestSourcesJarFile = new java.util.jar.JarFile( originalUberTestSourcesJar )
+try
+{
+ assert null == originalUberTestSourcesJarFile.getJarEntry( "ApiTest.java" )
+ assert null == originalUberTestSourcesJarFile.getJarEntry( "ImplTest.java" )
+ assert null != originalUberTestSourcesJarFile.getJarEntry( "UberTest.java" )
+}
+finally
+{
+ originalUberTestSourcesJarFile.close()
+}
+
+def jackOfAllUberTestSourcesJarFile = new java.util.jar.JarFile( jackOfAllUberTestSourcesJar )
+try
+{
+ assert null != jackOfAllUberTestSourcesJarFile.getJarEntry( "ApiTest.java" )
+ assert null != jackOfAllUberTestSourcesJarFile.getJarEntry( "ImplTest.java" )
+ assert null != jackOfAllUberTestSourcesJarFile.getJarEntry( "UberTest.java" )
+}
+finally
+{
+ jackOfAllUberTestSourcesJarFile.close()
+}
diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
index 112c301..9427923 100644
--- a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
+++ b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
@@ -542,6 +542,12 @@ public class ShadeMojo
sourcesJar );
}
+ if ( shadeTestJar )
+ {
+ projectHelper.attachArtifact( project, "test-jar", shadedClassifierName + "-tests",
+ testJar );
+ }
+
if ( createTestSourcesJar )
{
projectHelper.attachArtifact( project, "java-source",