lib/jbundler/pom.rb in jbundler-0.7.4 vs lib/jbundler/pom.rb in jbundler-0.8.0.pre

- old
+ new

@@ -1,153 +1,35 @@ -# -# Copyright (C) 2013 Christian Meier -# -# Permission is hereby granted, free of charge, to any person obtaining a copy of -# this software and associated documentation files (the "Software"), to deal in -# the Software without restriction, including without limitation the rights to -# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -# the Software, and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -require 'fileutils' -require 'tempfile' -require 'maven/tools/coordinate' -require 'securerandom' +bdir = java.lang.System.getProperty( "jbundler.basedir" ) +jfile = java.lang.System.getProperty( "jbundler.jarfile" ) -module JBundler +basedir( bdir ) +if basedir != bdir + # older maven-tools needs this + self.instance_variable_set( :@basedir, bdir ) +end - class Pom +( 0..10000 ).each do |i| + coord = java.lang.System.getProperty( "jbundler.jars.#{i}" ) + break unless coord + artifact = Maven::Tools::Artifact.from_coordinate( coord.to_s ) + # HACK around broken maven-tools + if artifact.exclusions + ex = artifact.classifier[1..-1] + ':' + artifact.exclusions.join(':') + artifact.classifier = nil + artifact.exclusions = ex.split /,/ + end + dependency_artifact( artifact ) +end - include Maven::Tools::Coordinate +jarfile( jfile ) - private - - def temp_dir - @temp_dir ||= - begin - # on travis the mktmpdir failed - d = Dir.mktmpdir rescue FileUtils.mkdir( ".tmp" + SecureRandom.hex( 12) ).first - at_exit { FileUtils.rm_rf(d.dup) } - # for jruby-1.7.4 1.8 mode add expand_path - File.expand_path( d ) - end - end - - def writeElement(xmlWriter,element_name, text) - xmlWriter.writeStartElement(element_name.to_java) - xmlWriter.writeCharacters(text.to_java) - xmlWriter.writeEndElement - end - - def java_imports - %w( - javax.xml.stream.XMLStreamWriter - javax.xml.stream.XMLOutputFactory - javax.xml.stream.XMLStreamException - ).each {|i| java_import i } - end +properties( 'project.build.sourceEncoding' => 'utf-8' ) - GROUP_ID = 'ruby.bundler' +plugin_repository :id => 'sonatype-snapshots', :url => 'https://oss.sonatype.org/content/repositories/snapshots' +jruby_plugin :gem, '1.0.10-SNAPSHOT' - def start_write_pom( out, name, version, packaging ) - outputFactory = XMLOutputFactory.newFactory() - xmlStreamWriter = outputFactory.createXMLStreamWriter( out ) +plugin :dependency, '2.8' - xmlStreamWriter.writeStartDocument - xmlStreamWriter.writeStartElement("project") - - writeElement(xmlStreamWriter,"modelVersion","4.0.0") - writeElement(xmlStreamWriter,"groupId", GROUP_ID) - writeElement(xmlStreamWriter,"artifactId", name) - writeElement(xmlStreamWriter,"version", version.to_s.to_java) - writeElement(xmlStreamWriter,"packaging", packaging) if packaging - xmlStreamWriter - end - - def to_classifier_version( coords ) - if coords.size == 4 - [ nil, coords[3] ] - else - [ coords[3], coords[4] ] - end - end - - def write_dep( xmlStreamWriter, coord ) - coords = coord.split(/:/) - group_id = coords[0] - artifact_id = coords[1] - extension = coords[2] - classifier, version = to_classifier_version( coords ) - - xmlStreamWriter.writeStartElement("dependency".to_java) - writeElement(xmlStreamWriter,"groupId", group_id) - writeElement(xmlStreamWriter,"artifactId", artifact_id) - writeElement(xmlStreamWriter,"version", version) - - writeElement(xmlStreamWriter,"type", extension) if extension != 'jar' - writeElement(xmlStreamWriter,"classifier", classifier) if classifier - xmlStreamWriter.writeEndElement #dependency - end - - def write_dependencies( xmlStreamWriter, deps ) - xmlStreamWriter.writeStartElement("dependencies".to_java) - - deps.each do |line| - coord = to_coordinate(line) - write_dep( xmlStreamWriter, coord ) if coord - end - - xmlStreamWriter.writeEndElement #dependencies - end - - def end_write_pom( xmlStreamWriter ) - xmlStreamWriter.writeEndElement #project - - xmlStreamWriter.writeEndDocument - xmlStreamWriter.close - end - - public - - def coordinate - @coord ||= "#{GROUP_ID}:#{@name}:#{@packaging}:#{@version}" - end - - def file - @file - end - - def initialize(name, version, deps, packaging = nil) - unless defined? XMLOutputFactory - java_imports - end - - @name = name - @packaging = packaging || 'jar' - @version = version - - @file = File.join(temp_dir, 'pom.xml') - - out = java.io.BufferedOutputStream.new( java.io.FileOutputStream.new( @file.to_java ) ) - - xmlStreamWriter = start_write_pom( out, name, version, packaging ) - - write_dependencies( xmlStreamWriter, deps ) - - end_write_pom( xmlStreamWriter ) - - ensure - out.close - end - - end +# some output +model.dependencies.each do |d| + puts " " + d.group_id + ':' + d.artifact_id + (d.classifier ? ":" + d.classifier : "" ) + ":" + d.version + ':' + (d.scope || 'compile') end