[FLINK-1342] Use maven-shade-plugin in quickstarts to build fat-jar This closes #486
Project: http://git-wip-us.apache.org/repos/asf/flink/repo Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/04a73883 Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/04a73883 Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/04a73883 Branch: refs/heads/master Commit: 04a738836f30d8967c427208ab04b1aef34f370a Parents: 9b4f483 Author: Robert Metzger <rmetz...@apache.org> Authored: Tue Feb 24 14:02:18 2015 +0100 Committer: Stephan Ewen <se...@apache.org> Committed: Tue Mar 17 20:21:39 2015 +0100 ---------------------------------------------------------------------- docs/java_api_quickstart.md | 2 +- docs/scala_api_quickstart.md | 2 +- .../main/resources/archetype-resources/pom.xml | 178 +++++++++++++++++-- .../src/assembly/flink-fat-jar.xml | 39 ---- .../main/resources/archetype-resources/pom.xml | 176 ++++++++++++++++-- pom.xml | 1 + 6 files changed, 322 insertions(+), 76 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/docs/java_api_quickstart.md ---------------------------------------------------------------------- diff --git a/docs/java_api_quickstart.md b/docs/java_api_quickstart.md index 89b4506..6c0f958 100644 --- a/docs/java_api_quickstart.md +++ b/docs/java_api_quickstart.md @@ -68,7 +68,7 @@ A note to Mac OS X users: The default JVM heapsize for Java is too small for Fli ## Build Project -If you want to __build your project__, go to your project directory and issue the`mvn clean package` command. You will __find a jar__ that runs on every Flink cluster in __target/your-artifact-id-1.0-SNAPSHOT.jar__. There is also a fat-jar, __target/your-artifact-id-1.0-SNAPSHOT-flink-fat-jar.jar__. This +If you want to __build your project__, go to your project directory and issue the`mvn clean install -Pbuild-jar` command. You will __find a jar__ that runs on every Flink cluster in __target/your-artifact-id-1.0-SNAPSHOT.jar__. There is also a fat-jar, __target/your-artifact-id-1.0-SNAPSHOT-flink-fat-jar.jar__. This also contains all dependencies that get added to the maven project. ## Next Steps http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/docs/scala_api_quickstart.md ---------------------------------------------------------------------- diff --git a/docs/scala_api_quickstart.md b/docs/scala_api_quickstart.md index e7f841f..48767cc 100644 --- a/docs/scala_api_quickstart.md +++ b/docs/scala_api_quickstart.md @@ -78,7 +78,7 @@ The IntelliJ IDE also supports Maven and offers a plugin for Scala development. ## Build Project -If you want to __build your project__, go to your project directory and issue the`mvn clean package` command. You will __find a jar__ that runs on every Flink cluster in __target/your-artifact-id-1.0-SNAPSHOT.jar__. There is also a fat-jar, __target/your-artifact-id-1.0-SNAPSHOT-flink-fat-jar.jar__. This +If you want to __build your project__, go to your project directory and issue the `mvn clean package -Pbuild-jar` command. You will __find a jar__ that runs on every Flink cluster in __target/your-artifact-id-1.0-SNAPSHOT.jar__. There is also a fat-jar, __target/your-artifact-id-1.0-SNAPSHOT-flink-fat-jar.jar__. This also contains all dependencies that get added to the maven project. ## Next Steps http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/pom.xml ---------------------------------------------------------------------- diff --git a/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/pom.xml b/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/pom.xml index d84e922..a59bde4 100644 --- a/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/pom.xml +++ b/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/pom.xml @@ -25,7 +25,7 @@ under the License. <version>${version}</version> <packaging>jar</packaging> - <name>Your Job's Name</name> + <name>Flink Quickstart Job</name> <url>http://www.myorganization.org</url> <properties> @@ -46,8 +46,24 @@ under the License. </repository> </repositories> - <!-- These two requirements are the minimum to use and develop Flink. - You can add others like <artifactId>flink-scala</artifactId> for Scala! --> + <!-- + + Execute + mvn clean install -Pbuild-jar + to build a jar file out of this project! + + + How to use the Flink Quickstart pom: + a) Adding new dependencies: + You can add dependencies to the list below. + Please check if the maven-shade-plugin below is filtering out your dependency and remove the exclude from there. + + b) Build a jar for running on the cluster: + There are two options for creating a jar from this project + b.1) "mvn clean install" -> this will create a fat jar which contains all dependencies necessary for running the jar created by this pom in a cluster. The "maven-shade-plugin" excludes everything that is provided on a running Flink cluster. + b.2) "mvn clean install -Pbuild-jar" -> This will also create a fat-jar, but with much nicer dependency exclusion handling. This approach is preferred and leads to much cleaner jar files. + + --> <dependencies> <dependency> <groupId>org.apache.flink</groupId> @@ -68,30 +84,123 @@ under the License. <build> <plugins> - - <!-- We use the maven-assembly plugin to create a fat jar that contains all dependencies + <!-- We use the maven-shade plugin to create a fat jar that contains all dependencies except flink and it's transitive dependencies. The resulting fat-jar can be executed on a cluster. Change the value of Program-Class if your program entry point changes. --> <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>2.4.1</version> - <configuration> - <descriptors> - <descriptor>src/assembly/flink-fat-jar.xml</descriptor> - </descriptors> - <archive> - <manifest> - <mainClass>${package}.Job</mainClass> - </manifest> - </archive> - </configuration> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>2.3</version> <executions> + <!-- Run shade goal on package phase --> <execution> - <id>make-assembly</id> <phase>package</phase> <goals> - <goal>single</goal> + <goal>shade</goal> </goals> + <configuration> + <artifactSet> + <excludes> + <!-- This list contains all dependencies of flink-dist + Everything else will be packaged into the fat-jar + --> + <exclude>org.apache.flink:flink-shaded-*</exclude> + <exclude>org.apache.flink:flink-core</exclude> + <exclude>org.apache.flink:flink-java</exclude> + <exclude>org.apache.flink:flink-scala</exclude> + <exclude>org.apache.flink:flink-runtime</exclude> + <exclude>org.apache.flink:flink-compiler</exclude> + <exclude>org.apache.flink:flink-spargel</exclude> + <exclude>org.apache.flink:flink-avro</exclude> + <exclude>org.apache.flink:flink-java-examples</exclude> + <exclude>org.apache.flink:flink-scala-examples</exclude> + <exclude>org.apache.flink:flink-streaming-examples</exclude> + <exclude>org.apache.flink:flink-streaming-core</exclude> + <!-- Also exclude very big transitive dependencies of Flink + + WARNING: You have to remove these excludes if your code relies on other + versions of these dependencies. + + --> + <exclude>org.scala-lang:scala-library</exclude> + <exclude>com.amazonaws:aws-java-sdk</exclude> + <exclude>io.netty:netty-all</exclude> + <exclude>com.typesafe.akka:akka-actor_2.10</exclude> + <exclude>com.typesafe.akka:akka-remote_2.10</exclude> + <exclude>io.netty:netty</exclude> + <exclude>com.typesafe.akka:akka-slf4j_2.10</exclude> + <exclude>org.eclipse.jetty:jetty-server</exclude> + <exclude>org.eclipse.jetty:jetty-continuation</exclude> + <exclude>org.eclipse.jetty:jetty-http</exclude> + <exclude>org.eclipse.jetty:jetty-io</exclude> + <exclude>org.eclipse.jetty:jetty-util</exclude> + <exclude>org.eclipse.jetty:jetty-security</exclude> + <exclude>org.eclipse.jetty:jetty-servlet</exclude> + <exclude>commons-fileupload:commons-fileupload</exclude> + <exclude>org.apache.avro:avro</exclude> + <exclude>commons-collections:commons-collections</exclude> + <exclude>org.codehaus.jackson:jackson-core-asl</exclude> + <exclude>org.codehaus.jackson:jackson-mapper-asl</exclude> + <exclude>com.thoughtworks.paranamer:paranamer</exclude> + <exclude>org.xerial.snappy:snappy-java</exclude> + <exclude>org.apache.commons:commons-compress</exclude> + <exclude>org.tukaani:xz</exclude> + <exclude>com.esotericsoftware.kryo:kryo</exclude> + <exclude>com.esotericsoftware.minlog:minlog</exclude> + <exclude>org.objenesis:objenesis</exclude> + <exclude>com.twitter:chill_2.10</exclude> + <exclude>com.twitter:chill-java</exclude> + <exclude>com.twitter:chill-avro_2.10</exclude> + <exclude>com.twitter:chill-bijection_2.10</exclude> + <exclude>com.twitter:bijection-core_2.10</exclude> + <exclude>com.twitter:bijection-avro_2.10</exclude> + <exclude>com.twitter:chill-protobuf</exclude> + <exclude>com.google.protobuf:protobuf-java</exclude> + <exclude>com.twitter:chill-thrift</exclude> + <exclude>org.apache.thrift:libthrift</exclude> + <exclude>commons-lang:commons-lang</exclude> + <exclude>junit:junit</exclude> + <exclude>de.javakaffee:kryo-serializers</exclude> + <exclude>joda-time:joda-time</exclude> + <exclude>org.apache.commons:commons-lang3</exclude> + <exclude>org.slf4j:slf4j-api</exclude> + <exclude>org.slf4j:slf4j-log4j12</exclude> + <exclude>log4j:log4j</exclude> + <exclude>org.apache.commons:commons-math</exclude> + <exclude>org.apache.sling:org.apache.sling.commons.json</exclude> + <exclude>commons-logging:commons-logging</exclude> + <exclude>org.apache.httpcomponents:httpclient</exclude> + <exclude>org.apache.httpcomponents:httpcore</exclude> + <exclude>commons-codec:commons-codec</exclude> + <exclude>com.fasterxml.jackson.core:jackson-core</exclude> + <exclude>com.fasterxml.jackson.core:jackson-databind</exclude> + <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude> + <exclude>org.codehaus.jettison:jettison</exclude> + <exclude>stax:stax-api</exclude> + <exclude>com.typesafe:config</exclude> + <exclude>org.uncommons.maths:uncommons-maths</exclude> + <exclude>com.github.scopt:scopt_2.10</exclude> + <exclude>org.mortbay.jetty:servlet-api</exclude> + <exclude>commons-io:commons-io</exclude> + <exclude>commons-cli:commons-cli</exclude> + </excludes> + </artifactSet> + <filters> + <filter> + <artifact>org.apache.flink:*</artifact> + <excludes> + <exclude>org/apache/flink/shaded/**</exclude> + <exclude>web-docs/**</exclude> + </excludes> + </filter> + </filters> + <transformers> + <!-- add Main-Class to manifest file --> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>${package}.Job</mainClass> + </transformer> + </transformers> + </configuration> </execution> </executions> </plugin> @@ -100,6 +209,7 @@ under the License. <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> + <version>2.5</version> <configuration> <archive> <manifestEntries> @@ -183,4 +293,34 @@ under the License. --> </build> + <profiles> + <profile> + <!-- A profile that does everyting correctly: + We set the Flink dependencies to provided --> + <id>build-jar</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <dependencies> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-java</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-streaming-core</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-clients</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> + </profile> + </profiles> </project> http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/src/assembly/flink-fat-jar.xml ---------------------------------------------------------------------- diff --git a/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/src/assembly/flink-fat-jar.xml b/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/src/assembly/flink-fat-jar.xml deleted file mode 100644 index 2819b81..0000000 --- a/flink-quickstart/flink-quickstart-java/src/main/resources/archetype-resources/src/assembly/flink-fat-jar.xml +++ /dev/null @@ -1,39 +0,0 @@ -<!-- - ~ 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. - --> - -<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> - <id>flink-fat-jar</id> - <formats> - <format>jar</format> - </formats> - <includeBaseDirectory>false</includeBaseDirectory> - <dependencySets> - <dependencySet> - <outputDirectory>/</outputDirectory> - <useProjectArtifact>true</useProjectArtifact> - <excludes> - <exclude>org.apache.flink:*</exclude> - </excludes> - <useTransitiveFiltering>true</useTransitiveFiltering> - <unpack>true</unpack> - <scope>runtime</scope> - </dependencySet> - </dependencySets> -</assembly> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/flink-quickstart/flink-quickstart-scala/src/main/resources/archetype-resources/pom.xml ---------------------------------------------------------------------- diff --git a/flink-quickstart/flink-quickstart-scala/src/main/resources/archetype-resources/pom.xml b/flink-quickstart/flink-quickstart-scala/src/main/resources/archetype-resources/pom.xml index 49036e8..43eec6d 100644 --- a/flink-quickstart/flink-quickstart-scala/src/main/resources/archetype-resources/pom.xml +++ b/flink-quickstart/flink-quickstart-scala/src/main/resources/archetype-resources/pom.xml @@ -26,7 +26,7 @@ under the License. <version>${version}</version> <packaging>jar</packaging> - <name>Your Job's Name</name> + <name>Flink Quickstart Job</name> <url>http://www.myorganization.org</url> <repositories> @@ -47,7 +47,24 @@ under the License. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> - <!-- These two requirements are the minimum to use and develop Flink. --> + <!-- + + Execute + mvn clean install -Pbuild-jar + to build a jar file out of this project! + + + How to use the Flink Quickstart pom: + a) Adding new dependencies: + You can add dependencies to the list below. + Please check if the maven-shade-plugin below is filtering out your dependency and remove the exclude from there. + + b) Build a jar for running on the cluster: + There are two options for creating a jar from this project + b.1) "mvn clean install" -> this will create a fat jar which contains all dependencies necessary for running the jar created by this pom in a cluster. The "maven-shade-plugin" excludes everything that is provided on a running Flink cluster. + b.2) "mvn clean install -Pbuild-jar" -> This will also create a fat-jar, but with much nicer dependency exclusion handling. This approach is preferred and leads to much cleaner jar files. + + --> <dependencies> <dependency> <groupId>org.apache.flink</groupId> @@ -71,26 +88,123 @@ under the License. on a cluster. Change the value of Program-Class if your program entry point changes. --> <build> <plugins> + <!-- We use the maven-shade plugin to create a fat jar that contains all dependencies + except flink and it's transitive dependencies. The resulting fat-jar can be executed + on a cluster. Change the value of Program-Class if your program entry point changes. --> <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>2.4.1</version> - <configuration> - <descriptors> - <descriptor>src/assembly/flink-fat-jar.xml</descriptor> - </descriptors> - <archive> - <manifestEntries> - <Program-Class>${package}.Job</Program-Class> - </manifestEntries> - </archive> - </configuration> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>2.3</version> <executions> + <!-- Run shade goal on package phase --> <execution> - <id>make-assembly</id> <phase>package</phase> <goals> - <goal>single</goal> + <goal>shade</goal> </goals> + <configuration> + <artifactSet> + <excludes> + <!-- This list contains all dependencies of flink-dist + Everything else will be packaged into the fat-jar + --> + <exclude>org.apache.flink:flink-shaded-*</exclude> + <exclude>org.apache.flink:flink-core</exclude> + <exclude>org.apache.flink:flink-java</exclude> + <exclude>org.apache.flink:flink-scala</exclude> + <exclude>org.apache.flink:flink-runtime</exclude> + <exclude>org.apache.flink:flink-compiler</exclude> + <exclude>org.apache.flink:flink-spargel</exclude> + <exclude>org.apache.flink:flink-avro</exclude> + <exclude>org.apache.flink:flink-java-examples</exclude> + <exclude>org.apache.flink:flink-scala-examples</exclude> + <exclude>org.apache.flink:flink-streaming-examples</exclude> + <exclude>org.apache.flink:flink-streaming-core</exclude> + <!-- Also exclude very big transitive dependencies of Flink + + WARNING: You have to remove these excludes if your code relies on other + versions of these dependencies. + + --> + <exclude>org.scala-lang:scala-library</exclude> + <exclude>com.amazonaws:aws-java-sdk</exclude> + <exclude>io.netty:netty-all</exclude> + <exclude>com.typesafe.akka:akka-actor_2.10</exclude> + <exclude>com.typesafe.akka:akka-remote_2.10</exclude> + <exclude>io.netty:netty</exclude> + <exclude>com.typesafe.akka:akka-slf4j_2.10</exclude> + <exclude>org.eclipse.jetty:jetty-server</exclude> + <exclude>org.eclipse.jetty:jetty-continuation</exclude> + <exclude>org.eclipse.jetty:jetty-http</exclude> + <exclude>org.eclipse.jetty:jetty-io</exclude> + <exclude>org.eclipse.jetty:jetty-util</exclude> + <exclude>org.eclipse.jetty:jetty-security</exclude> + <exclude>org.eclipse.jetty:jetty-servlet</exclude> + <exclude>commons-fileupload:commons-fileupload</exclude> + <exclude>org.apache.avro:avro</exclude> + <exclude>commons-collections:commons-collections</exclude> + <exclude>org.codehaus.jackson:jackson-core-asl</exclude> + <exclude>org.codehaus.jackson:jackson-mapper-asl</exclude> + <exclude>com.thoughtworks.paranamer:paranamer</exclude> + <exclude>org.xerial.snappy:snappy-java</exclude> + <exclude>org.apache.commons:commons-compress</exclude> + <exclude>org.tukaani:xz</exclude> + <exclude>com.esotericsoftware.kryo:kryo</exclude> + <exclude>com.esotericsoftware.minlog:minlog</exclude> + <exclude>org.objenesis:objenesis</exclude> + <exclude>com.twitter:chill_2.10</exclude> + <exclude>com.twitter:chill-java</exclude> + <exclude>com.twitter:chill-avro_2.10</exclude> + <exclude>com.twitter:chill-bijection_2.10</exclude> + <exclude>com.twitter:bijection-core_2.10</exclude> + <exclude>com.twitter:bijection-avro_2.10</exclude> + <exclude>com.twitter:chill-protobuf</exclude> + <exclude>com.google.protobuf:protobuf-java</exclude> + <exclude>com.twitter:chill-thrift</exclude> + <exclude>org.apache.thrift:libthrift</exclude> + <exclude>commons-lang:commons-lang</exclude> + <exclude>junit:junit</exclude> + <exclude>de.javakaffee:kryo-serializers</exclude> + <exclude>joda-time:joda-time</exclude> + <exclude>org.apache.commons:commons-lang3</exclude> + <exclude>org.slf4j:slf4j-api</exclude> + <exclude>org.slf4j:slf4j-log4j12</exclude> + <exclude>log4j:log4j</exclude> + <exclude>org.apache.commons:commons-math</exclude> + <exclude>org.apache.sling:org.apache.sling.commons.json</exclude> + <exclude>commons-logging:commons-logging</exclude> + <exclude>org.apache.httpcomponents:httpclient</exclude> + <exclude>org.apache.httpcomponents:httpcore</exclude> + <exclude>commons-codec:commons-codec</exclude> + <exclude>com.fasterxml.jackson.core:jackson-core</exclude> + <exclude>com.fasterxml.jackson.core:jackson-databind</exclude> + <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude> + <exclude>org.codehaus.jettison:jettison</exclude> + <exclude>stax:stax-api</exclude> + <exclude>com.typesafe:config</exclude> + <exclude>org.uncommons.maths:uncommons-maths</exclude> + <exclude>com.github.scopt:scopt_2.10</exclude> + <exclude>org.mortbay.jetty:servlet-api</exclude> + <exclude>commons-io:commons-io</exclude> + <exclude>commons-cli:commons-cli</exclude> + </excludes> + </artifactSet> + <filters> + <filter> + <artifact>org.apache.flink:*</artifact> + <excludes> + <exclude>org/apache/flink/shaded/**</exclude> + <exclude>web-docs/**</exclude> + </excludes> + </filter> + </filters> + <transformers> + <!-- add Main-Class to manifest file --> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>${package}.Job</mainClass> + </transformer> + </transformers> + </configuration> </execution> </executions> </plugin> @@ -185,4 +299,34 @@ under the License. </plugin> </plugins> </build> + <profiles> + <profile> + <!-- A profile that does everyting correctly: + We set the Flink dependencies to provided --> + <id>build-jar</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <dependencies> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-scala</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-streaming-core</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-clients</artifactId> + <version>0.9-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> + </profile> + </profiles> </project> http://git-wip-us.apache.org/repos/asf/flink/blob/04a73883/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index cf042ed..3c6538e 100644 --- a/pom.xml +++ b/pom.xml @@ -603,6 +603,7 @@ under the License. <exclude>flink-staging/flink-avro/src/test/resources/avro/*.avsc</exclude> <exclude>flink-staging/flink-avro/src/test/resources/testdata.avro</exclude> <exclude>flink-staging/flink-avro/src/test/java/org/apache/flink/api/io/avro/generated/*.java</exclude> + <exclude>out/test/flink-avro/avro/user.avsc</exclude> <!-- Configuration Files. --> <exclude>**/flink-bin/conf/slaves</exclude> <!-- Administrative files in the main trunk. -->