diff --git a/src/it/it-project-parent/pom.xml b/src/it/it-project-parent/pom.xml index 7c588ae96..511da0d65 100644 --- a/src/it/it-project-parent/pom.xml +++ b/src/it/it-project-parent/pom.xml @@ -18,13 +18,24 @@ under the License. --> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 org.apache.maven.plugin.assembly.test it-project-parent pom 1 + + + + + commons-io + commons-io + @commonsIoVersion@ + + + + @@ -71,14 +82,14 @@ under the License. - + testing true - + diff --git a/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/pom.xml b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/pom.xml new file mode 100644 index 000000000..ecd2a50bb --- /dev/null +++ b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/pom.xml @@ -0,0 +1,66 @@ + + + + + 4.0.0 + + org.apache.maven.plugin.assembly.test + it-project-parent + 1 + + + main-class-and-dependencies + 1 + + + + commons-io + commons-io + + + + + + + maven-assembly-plugin + + + assembly + package + + single + + + + jar-with-dependencies + + + + test.App + + + + + + + + + + diff --git a/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/src/main/java/test/App.java b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/src/main/java/test/App.java new file mode 100644 index 000000000..af52385c0 --- /dev/null +++ b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/src/main/java/test/App.java @@ -0,0 +1,33 @@ +package test; + +/* + * 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. + */ + +import org.apache.commons.io.IOUtils; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) { + System.out.print( "Hello World!" + IOUtils.LF ); + } +} diff --git a/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/verify.groovy b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/verify.groovy new file mode 100644 index 000000000..13b3daab7 --- /dev/null +++ b/src/it/projects/descriptor-refs/jar-with-dependencies/main-class-and-dependencies/verify.groovy @@ -0,0 +1,38 @@ +/* + * 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. + */ + +import java.util.jar.JarEntry +import java.util.jar.JarFile +import java.util.jar.Attributes + +def expectedJarEntries = [ + "org/apache/commons/io/IOUtils.class", + "test/App.class" +] + +File file = new File(basedir, "target/main-class-and-dependencies-1-jar-with-dependencies.jar") +assert file.isFile(): "jar file is missing or a directory." + +JarFile jarFile = new JarFile(file) +expectedJarEntries.each {entryName -> + JarEntry jarEntry = jarFile.getJarEntry(entryName) + assert jarEntry != null: "missing jar entry: " + entryName +} + +assert "test.App" == jarFile.manifest.mainAttributes.getValue(Attributes.Name.MAIN_CLASS)