Updated Branches: refs/heads/ode-1.3.6.x 0a2e6f97c -> 24013c829
buildr extension to add dependencies to poms. Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/49dbc3b9 Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/49dbc3b9 Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/49dbc3b9 Branch: refs/heads/ode-1.3.6.x Commit: 49dbc3b96d81ac94de0d46cb403be018f61a620e Parents: 0a2e6f9 Author: Tammo van Lessen <[email protected]> Authored: Tue Oct 1 18:40:33 2013 +0200 Committer: Tammo van Lessen <[email protected]> Committed: Tue Oct 1 18:40:33 2013 +0200 ---------------------------------------------------------------------- tasks/pomwithdependencies.rake | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/49dbc3b9/tasks/pomwithdependencies.rake ---------------------------------------------------------------------- diff --git a/tasks/pomwithdependencies.rake b/tasks/pomwithdependencies.rake new file mode 100644 index 0000000..167a58b --- /dev/null +++ b/tasks/pomwithdependencies.rake @@ -0,0 +1,81 @@ +# 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. + +module Buildr + + # + # Module to add project dependencies to our artifact's pom files. + # Inspired by BUILDR-486 and https://github.com/jvshahid/buildr-dependency-extensions. + # + module PomWithDependencies + include Extension + + # We have to add the dependencies to the monkey patched POM before the dependencies are + # changed in the compile, test and run after_define + after_define(:compile) do |project| + project.package.pom.dependencies = + [project.compile.dependencies.select {|dep| dep.respond_to?(:to_spec) && dep.respond_to?(:to_hash)}.map { |a| a.to_hash.merge(:scope => 'compile') }, + project.test.dependencies.select {|dep| dep.respond_to?(:to_spec) && dep.respond_to?(:to_hash) && !project.compile.dependencies.include?(dep)}.map { |a| a.to_hash.merge(:scope => 'test') }, + project.run.classpath.select {|dep| dep.respond_to?(:to_spec) && dep.respond_to?(:to_hash) && !project.compile.dependencies.include?(dep)}.map { |a| a.to_hash.merge(:scope => 'runtime') } + ].flatten + end + end + + module ActsAsArtifact + # monkey patch Buildr's the pom xml generation + def pom_xml + Proc.new do + xml = Builder::XmlMarkup.new(:indent=>2) + xml.instruct! + xml.project do + xml.modelVersion '4.0.0' + xml.groupId group + xml.artifactId id + xml.version version + xml.classifier classifier if classifier + unless @dependencies.nil? || @dependencies.empty? + xml.dependencies do + @dependencies.uniq.each do |art| + xml.dependency do + xml.groupId art[:group] + xml.artifactId art[:id] + xml.version art[:version] + xml.classifier art[:classifier] if art.has_key? :classifier + xml.scope art[:scope] if art.has_key? :scope + end + end + end + end + end + end + end + + # make ActAsArtifac dependency aware + def dependencies=(dependencies) + @dependencies = dependencies + end + + def dependencies + @dependencies ||= POM.load(self).dependencies.map { |spec| artifact(spec) } if self.is_a? Artifact + @dependencies ||= [] + end + + end +end + +# use this module for all projects. +class Buildr::Project + include Buildr::PomWithDependencies +end
