Enhanced source release plugin to exclude nodejs binaries and build directories
Project: http://git-wip-us.apache.org/repos/asf/ode-console/repo Commit: http://git-wip-us.apache.org/repos/asf/ode-console/commit/59d39553 Tree: http://git-wip-us.apache.org/repos/asf/ode-console/tree/59d39553 Diff: http://git-wip-us.apache.org/repos/asf/ode-console/diff/59d39553 Branch: refs/heads/master Commit: 59d39553160c63dda76b4ab4e1cdcd436991604e Parents: b7c50f9 Author: sathwik <[email protected]> Authored: Tue Oct 4 15:55:42 2016 +0530 Committer: sathwik <[email protected]> Committed: Tue Oct 4 15:55:42 2016 +0530 ---------------------------------------------------------------------- assemblies/source-release.xml | 27 +++++++++++++ assemblies/source-shared.xml | 78 ++++++++++++++++++++++++++++++++++++++ pom.xml | 34 +++++++++++++++++ 3 files changed, 139 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode-console/blob/59d39553/assemblies/source-release.xml ---------------------------------------------------------------------- diff --git a/assemblies/source-release.xml b/assemblies/source-release.xml new file mode 100644 index 0000000..3c62385 --- /dev/null +++ b/assemblies/source-release.xml @@ -0,0 +1,27 @@ +<?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. +--> + +<assembly> + <id>source-release</id> + <formats> + <format>zip</format> + </formats> + <componentDescriptors> + <componentDescriptor>source-shared.xml</componentDescriptor> + </componentDescriptors> +</assembly> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ode-console/blob/59d39553/assemblies/source-shared.xml ---------------------------------------------------------------------- diff --git a/assemblies/source-shared.xml b/assemblies/source-shared.xml new file mode 100644 index 0000000..897dc58 --- /dev/null +++ b/assemblies/source-shared.xml @@ -0,0 +1,78 @@ +<?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. +--> + +<component> + <fileSets> + <!-- main project directory structure --> + <fileSet> + <directory>.</directory> + <outputDirectory></outputDirectory> + <useDefaultExcludes>true</useDefaultExcludes> + <excludes> + <!-- build output --> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude> + + <!-- NOTE: Most of the following excludes should not be required + if the standard release process is followed. This is because the + release plugin checks out project sources into a location like + target/checkout, then runs the build from there. The result is + a source-release archive that comes from a pretty clean directory + structure. + + HOWEVER, if the release plugin is configured to run extra goals + or generate a project website, it's definitely possible that some + of these files will be present. So, it's safer to exclude them. + --> + + <!-- IDEs --> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.idea(/.*)?]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?out(/.*)?]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.settings(/.*)?]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude> + + <!-- misc --> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?cobertura\.ser]</exclude> + + <!-- release-plugin temp files --> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude> + <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude> + + <!-- Exlude downloaded nodejs executables, node_modules,bower_components and build directories created during the build --> + <exclude>node_modules/**</exclude> + <exclude>node/**</exclude> + <exclude>bower_components/**</exclude> + <exclude>.tmp/**</exclude> + <exclude>dist/**</exclude> + <exclude>etc/**</exclude> + </excludes> + </fileSet> + <!-- license, readme, etc. calculated at build time --> + <fileSet> + <directory>${project.build.directory}/maven-shared-archive-resources/META-INF</directory> + <outputDirectory></outputDirectory> + </fileSet> + </fileSets> +</component> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ode-console/blob/59d39553/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index ef1d1d5..50da66b 100644 --- a/pom.xml +++ b/pom.xml @@ -176,4 +176,38 @@ under the License. </plugin> </plugins> </build> + + <!-- + Apache release profile creates a source release which includes all the contents in the project directory, + this results in inclusion of unwanted nodejs binaries, node_modules, and build directories created during the build. + Hence we add exclusions for these binaries and build directories. + --> + <profiles> + <profile> + <id>apache-release</id> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>source-release-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + <configuration> + <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot> + <descriptors> + <descriptor>assemblies/source-release.xml</descriptor> + </descriptors> + <tarLongFileMode>gnu</tarLongFileMode> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> \ No newline at end of file
