Class: JBundler::Pom

Inherits:
Object
  • Object
show all
Includes:
MavenUtil
Defined in:
lib/jbundler/pom.rb

Instance Method Summary collapse

Methods included from MavenUtil

#to_coordinate, #to_version

Constructor Details

#initialize(name, version, deps, packaging = nil) ⇒ Pom

Returns a new instance of Pom.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/jbundler/pom.rb', line 49

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))
  outputFactory = XMLOutputFactory.newFactory()
  xmlStreamWriter = outputFactory.createXMLStreamWriter(out)
  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.writeStartElement("dependencies".to_java)
  
  deps.each do |line|
    if coord = to_coordinate(line)
      group_id, artifact_id, extension, version = coord.split(/:/)

      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'
      xmlStreamWriter.writeEndElement #dependency
    end
  end
  xmlStreamWriter.writeEndElement #dependencies
  
  xmlStreamWriter.writeEndElement #project
  
  xmlStreamWriter.writeEndDocument
  xmlStreamWriter.close
  out.close
end

Instance Method Details

#coordinateObject



41
42
43
# File 'lib/jbundler/pom.rb', line 41

def coordinate
  @coord ||= "#{GROUP_ID}:#{@name}:#{@packaging}:#{@version}"
end

#fileObject



45
46
47
# File 'lib/jbundler/pom.rb', line 45

def file
  @file
end