mavenReactorService 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +6 -0
- data/README.md +35 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/mavenReactorization +7 -0
- data/bin/setup +8 -0
- data/lib/mavenReactorService.rb +5 -0
- data/lib/mavenReactorService/BasicInfoHandler.rb +173 -0
- data/lib/mavenReactorService/DMAndPMManagementForExternalConfiguration.rb +205 -0
- data/lib/mavenReactorService/DependencyHandler.rb +264 -0
- data/lib/mavenReactorService/DependencyManagementHandler.rb +183 -0
- data/lib/mavenReactorService/DeveloperAndContributors.rb +130 -0
- data/lib/mavenReactorService/InterDependencyHandler.rb +87 -0
- data/lib/mavenReactorService/MergeRepository.rb +98 -0
- data/lib/mavenReactorService/MoveCommonPropertiesToRootPom.rb +83 -0
- data/lib/mavenReactorService/MoveDistributionManagement.rb +68 -0
- data/lib/mavenReactorService/MvnReactorization.rb +209 -0
- data/lib/mavenReactorService/ParentPomHandler.rb +71 -0
- data/lib/mavenReactorService/PluginConfigurationHandler.rb +106 -0
- data/lib/mavenReactorService/PluginHandler.rb +292 -0
- data/lib/mavenReactorService/PluginManagementHandler.rb +391 -0
- data/lib/mavenReactorService/PropertyHandler.rb +129 -0
- data/lib/mavenReactorService/ReactorCommands.rb +49 -0
- data/lib/mavenReactorService/ReactorHandler.rb +309 -0
- data/lib/mavenReactorService/SiteAndEclipsePluginHandler.rb +105 -0
- data/lib/mavenReactorService/ValidateProjects.rb +70 -0
- data/lib/mavenReactorService/version.rb +3 -0
- data/mavenReactorService.gemspec +39 -0
- metadata +146 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
class InterDependencyHandler
|
2
|
+
@@reactorHandler = ReactorHandler.new
|
3
|
+
@@dependencyHandler = DependencyHandler.new
|
4
|
+
@@mvnReactorization = MvnReactorization.new
|
5
|
+
@@pluginManagementHandler = PluginManagementHandler.new
|
6
|
+
def handleInterDependecy(project_directory_path)
|
7
|
+
pomArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
8
|
+
fullSignatureArr = getGidAndArtifactIdOfProject(pomArr)
|
9
|
+
putCommentForinterDepedency(pomArr,fullSignatureArr)
|
10
|
+
putCommentForinterDepedencyManagement(pomArr,fullSignatureArr)
|
11
|
+
@@pluginManagementHandler.executeShortPom()
|
12
|
+
end
|
13
|
+
|
14
|
+
def getGidAndArtifactIdOfProject(pomArr)
|
15
|
+
fullSignatureArr = Array.new
|
16
|
+
if (!pomArr.nil? and !pomArr.empty?)
|
17
|
+
pomArr.each do |eachPomPath|
|
18
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath)
|
19
|
+
grpId = pom_document.at("project/groupId").text
|
20
|
+
artifactId = pom_document.at("project/artifactId").text
|
21
|
+
fullSignature = "#{grpId}:#{artifactId}"
|
22
|
+
fullSignatureArr.push(fullSignature)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return fullSignatureArr
|
26
|
+
end
|
27
|
+
|
28
|
+
def putCommentForinterDepedency(pomArr,fullSignatureArr)
|
29
|
+
pomArr.each do |eachPomPath|
|
30
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath)
|
31
|
+
nokObj = Nokogiri::XML::Node
|
32
|
+
commentObj = Nokogiri::XML::Comment
|
33
|
+
dependenciesNode = pom_document.at("project/dependencies")
|
34
|
+
pom_document.css("project/dependencies/dependency").each do |eachDepedency|
|
35
|
+
grpId = eachDepedency.at("groupId").text
|
36
|
+
artifactId = eachDepedency.at("artifactId").text
|
37
|
+
fullSignature = "#{grpId}:#{artifactId}"
|
38
|
+
if (fullSignatureArr.include?fullSignature and !eachDepedency.at("version").nil?)
|
39
|
+
version = eachDepedency.at("version").text
|
40
|
+
eachDepedency.at("version").remove
|
41
|
+
versionNode = nokObj.new("version",eachDepedency)
|
42
|
+
versionNode.content=version
|
43
|
+
commentNode = commentObj.new(versionNode, " TODO: Version should be removed and managed by reactor pom version")
|
44
|
+
versionNode.add_previous_sibling(commentNode)
|
45
|
+
eachDepedency.add_child(commentNode)
|
46
|
+
eachDepedency.add_child(versionNode)
|
47
|
+
dependenciesNode.add_child(eachDepedency)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
@@dependencyHandler.add_node_element('//project', dependenciesNode, pom_document)
|
51
|
+
@@mvnReactorization.write_nokogiri_to_xml(eachPomPath, pom_document)
|
52
|
+
end
|
53
|
+
puts "Comments added for sibling module dependency"
|
54
|
+
end
|
55
|
+
|
56
|
+
def putCommentForinterDepedencyManagement(pomArr,fullSignatureArr)
|
57
|
+
pomArr.each do |eachPomPath|
|
58
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath)
|
59
|
+
nokObj = Nokogiri::XML::Node
|
60
|
+
commentObj = Nokogiri::XML::Comment
|
61
|
+
dependencyManagementNode = pom_document.at("project/dependencyManagement")
|
62
|
+
dependenciesNode = pom_document.at("project/dependencyManagement/dependencies")
|
63
|
+
pom_document.css("project/dependencyManagement/dependencies/dependency").each do |eachDepedency|
|
64
|
+
grpId = eachDepedency.at("groupId").text
|
65
|
+
artifactId = eachDepedency.at("artifactId").text
|
66
|
+
fullSignature = "#{grpId}:#{artifactId}"
|
67
|
+
if (fullSignatureArr.include?fullSignature and !eachDepedency.at("version").nil?)
|
68
|
+
version = eachDepedency.at("version").text
|
69
|
+
eachDepedency.at("version").remove
|
70
|
+
versionNode = nokObj.new("version",eachDepedency)
|
71
|
+
versionNode.content=version
|
72
|
+
commentNode = commentObj.new(versionNode, " TODO: Version should be removed and managed by reactor pom version")
|
73
|
+
versionNode.add_previous_sibling(commentNode)
|
74
|
+
eachDepedency.add_child(commentNode)
|
75
|
+
eachDepedency.add_child(versionNode)
|
76
|
+
dependenciesNode.add_child(eachDepedency)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
if !dependencyManagementNode.nil?
|
80
|
+
dependencyManagementNode.add_child(dependenciesNode)
|
81
|
+
@@dependencyHandler.add_node_element('//project', dependencyManagementNode, pom_document)
|
82
|
+
@@mvnReactorization.write_nokogiri_to_xml(eachPomPath, pom_document)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
puts "Comments added for sibling module dependency"
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
class MergeRepository
|
2
|
+
@@reactorHandler = ReactorHandler.new
|
3
|
+
@@dependencyHandler = DependencyHandler.new
|
4
|
+
@@mvnReactorization = MvnReactorization.new
|
5
|
+
def findCommonRepos(project_directory_path,tagName)
|
6
|
+
childPomPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
7
|
+
fullPomPath = "#{project_directory_path}/pom.xml"
|
8
|
+
pom_document = Nokogiri::XML(open(fullPomPath))
|
9
|
+
repoIdArr = Array.new
|
10
|
+
childPomPathArr.each do |eachChildModule|
|
11
|
+
child_pom_document = Nokogiri::XML(open(eachChildModule))
|
12
|
+
child_pom_document.css("project/#{tagName}").each do |eachChildRepo|
|
13
|
+
eachChildId = eachChildRepo.at("url").text
|
14
|
+
lastChar = eachChildId[-1]
|
15
|
+
if lastChar=="/"
|
16
|
+
eachChildId = eachChildId.chomp(lastChar)
|
17
|
+
end
|
18
|
+
if !(repoIdArr.include?eachChildId)
|
19
|
+
repoIdArr.push(eachChildId)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
return repoIdArr
|
24
|
+
end
|
25
|
+
|
26
|
+
def makeFullRepoFromCommonRepo(project_directory_path,tagName,commonUrlList)
|
27
|
+
childPomPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
28
|
+
rootRepo = Array.new
|
29
|
+
identifierList = Array.new
|
30
|
+
childPomPathArr.each do |eachChildModule|
|
31
|
+
child_pom_document = Nokogiri::XML(open(eachChildModule))
|
32
|
+
child_pom_document.css("project/#{tagName}").each do |eachChildRepo|
|
33
|
+
eachChildId = eachChildRepo.at("url").text
|
34
|
+
lastChar = eachChildId[-1]
|
35
|
+
if lastChar=="/"
|
36
|
+
eachChildId = eachChildId.chomp(lastChar)
|
37
|
+
end
|
38
|
+
if ((commonUrlList.include?eachChildId) and !(identifierList.include?eachChildId))
|
39
|
+
rootRepo.push(eachChildRepo)
|
40
|
+
identifierList.push(eachChildId)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
return rootRepo
|
45
|
+
end
|
46
|
+
|
47
|
+
def addRepoIntoReactorPom (project_directory_path,rootRepo,tagName)
|
48
|
+
fullPomPath = "#{project_directory_path}/pom.xml"
|
49
|
+
pom_document = Nokogiri::XML(open(fullPomPath))
|
50
|
+
if !(pom_document.at_css("project/#{tagName}").nil?)
|
51
|
+
pom_document.at_css("project/#{tagName}").remove
|
52
|
+
end
|
53
|
+
nokObj = Nokogiri::XML::Node
|
54
|
+
projectNode = pom_document.at("project")
|
55
|
+
repositoriesnode = nokObj.new(tagName,projectNode)
|
56
|
+
repositoryStr = rootRepo.to_s
|
57
|
+
repoStrBuffer = StringIO.new
|
58
|
+
rootRepo.each do |eachRepo|
|
59
|
+
repoStrBuffer << eachRepo
|
60
|
+
end
|
61
|
+
repositoriesStr = repoStrBuffer.string
|
62
|
+
repositorynode = nokObj.new(repositoriesStr,projectNode)
|
63
|
+
repositoriesnode.add_child(repositorynode)
|
64
|
+
repoStr = repositoriesnode.to_s
|
65
|
+
repoStr = repoStr.gsub(">/>",">")
|
66
|
+
repoStr = repoStr.gsub("<<","<")
|
67
|
+
pom_nokogiri = @@dependencyHandler.add_node_element('project', repoStr, pom_document)
|
68
|
+
File.write(fullPomPath, pom_nokogiri)
|
69
|
+
@@mvnReactorization.generateFormatedXml(project_directory_path)
|
70
|
+
end
|
71
|
+
|
72
|
+
def deleteRepoFromChildModule(project_directory_path,tagName)
|
73
|
+
childPomPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
74
|
+
childPomPathArr.each do |eachChildPom|
|
75
|
+
child_pom_document = Nokogiri::XML(open(eachChildPom))
|
76
|
+
child_pom_document.at_css("project/#{tagName}").remove
|
77
|
+
File.write(eachChildPom, child_pom_document)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
def renameDuplicateRepoId(project_directory_path,tagName)
|
81
|
+
reactorPom = "#{project_directory_path}/pom.xml"
|
82
|
+
repoIdList = Array.new
|
83
|
+
counter = 1
|
84
|
+
reactorPomDoc = Nokogiri::XML(open(reactorPom))
|
85
|
+
reactorPomDoc.css("project/#{tagName}").each do |eachChildRepo|
|
86
|
+
repoId = eachChildRepo.at("id").text
|
87
|
+
if (repoIdList.include?repoId)
|
88
|
+
idNode = eachChildRepo.at("id")
|
89
|
+
idNode.content = "#{repoId}-#{counter}"
|
90
|
+
counter = counter+1
|
91
|
+
else
|
92
|
+
repoIdList.push(repoId)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
File.write(reactorPom, reactorPomDoc)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
@@ -0,0 +1,83 @@
|
|
1
|
+
class MoveCommonPropertiesToRootPom
|
2
|
+
@@reactorHandler = ReactorHandler.new
|
3
|
+
@@modulePomPaths = nil
|
4
|
+
def findCommonProperties (project_directory_path)
|
5
|
+
@@modulePomPaths = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
6
|
+
allModuleProperties = Array.new
|
7
|
+
commonProperties = Array.new
|
8
|
+
@@modulePomPaths.each do |modulePomPath|
|
9
|
+
modulePomDoc = Nokogiri::XML(open(modulePomPath))
|
10
|
+
modulePomDoc.css("project/properties").children.each do |property|
|
11
|
+
if property.name != 'text' && property.name != 'comment'
|
12
|
+
propertyNameValue = "#{property.name}:#{property.text}"
|
13
|
+
allModuleProperties.push(propertyNameValue)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
allModuleProperties.uniq.each do |property|
|
18
|
+
if allModuleProperties.count(property) == @@modulePomPaths.length
|
19
|
+
commonProperties.push(property)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
return commonProperties
|
23
|
+
end
|
24
|
+
|
25
|
+
def writeCommonPropertiesToReactorPom (project_directory_path,commonProperties)
|
26
|
+
reactorPomPath = "#{project_directory_path}/pom.xml"
|
27
|
+
pom_document = @@reactorHandler.parse_xml_from_file(reactorPomPath)
|
28
|
+
nokObj = Nokogiri::XML::Node
|
29
|
+
projectNode = pom_document.at('project')
|
30
|
+
propertiesNode = nokObj.new('properties',projectNode)
|
31
|
+
commonProperties.each do |property|
|
32
|
+
propNameValue = property.split(':')
|
33
|
+
propName = propNameValue[0]
|
34
|
+
propValue = propNameValue[1]
|
35
|
+
propNode = nokObj.new(propName,projectNode)
|
36
|
+
propNode.content = propValue
|
37
|
+
propertiesNode.add_child(propNode)
|
38
|
+
end
|
39
|
+
dependencyHandler = DependencyHandler.new
|
40
|
+
pomObj = dependencyHandler.add_node_element('project',propertiesNode,pom_document)
|
41
|
+
File.write(reactorPomPath,pomObj)
|
42
|
+
puts "Moved common properties to reactor pom!!!"
|
43
|
+
end
|
44
|
+
|
45
|
+
def removeCommonPropertiesfromModules (project_directory_path,commonProperties)
|
46
|
+
|
47
|
+
@@modulePomPaths.each do |eachModulePath|
|
48
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachModulePath)
|
49
|
+
commonProperties.each do |property|
|
50
|
+
propNameValue = property.split(':')
|
51
|
+
propName = propNameValue[0]
|
52
|
+
pom_document.css('project/properties').children.each do |eachProperty|
|
53
|
+
if eachProperty.name == propName
|
54
|
+
eachProperty.remove
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
File.write(eachModulePath,pom_document)
|
59
|
+
end
|
60
|
+
puts "Common properties removed from child modules!!!"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
class MoveDistributionManagement
|
2
|
+
@@reactorHandler = ReactorHandler.new
|
3
|
+
@@modulePomPaths = nil
|
4
|
+
def moveDistributionManagementFromFirstModule (project_directory_path,externalPomUrl)
|
5
|
+
distMgmtFlag = true
|
6
|
+
@@modulePomPaths = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
7
|
+
if (!externalPomUrl.nil?)
|
8
|
+
begin
|
9
|
+
Nokogiri::HTML(open(externalPomUrl)) #This is to validate the url
|
10
|
+
rescue
|
11
|
+
raise "Parent POM URL is not valid !!!"
|
12
|
+
end
|
13
|
+
pomDoc = Nokogiri::XML(open("#{externalPomUrl}"))
|
14
|
+
if !pomDoc.at("project/distributionManagement").nil?
|
15
|
+
distMgmtFlag = false
|
16
|
+
removeDistributionManagementFromModules()
|
17
|
+
else
|
18
|
+
firstModulePomDoc = Nokogiri::XML(open("#{@@modulePomPaths[0]}"))
|
19
|
+
distMgmtTag = firstModulePomDoc.at("project/distributionManagement")
|
20
|
+
writeDistributionManagementInReactorPom(project_directory_path,distMgmtTag)
|
21
|
+
removeDistributionManagementFromModules()
|
22
|
+
end
|
23
|
+
else
|
24
|
+
firstModulePomDoc = Nokogiri::XML(open("#{@@modulePomPaths[0]}"))
|
25
|
+
distMgmtTag = firstModulePomDoc.at("project/distributionManagement")
|
26
|
+
writeDistributionManagementInReactorPom(project_directory_path,distMgmtTag)
|
27
|
+
removeDistributionManagementFromModules()
|
28
|
+
end
|
29
|
+
pom_document = @@reactorHandler.parse_xml_from_file("#{project_directory_path}/pom.xml")
|
30
|
+
if distMgmtFlag and pom_document.at("project/distributionManagement").nil?
|
31
|
+
comment = " TODO: There is no <distributionManagement> defined for this reactor project. Please add this section before taking into production."
|
32
|
+
modulesNode = pom_document.at("project/modules")
|
33
|
+
commentNode = Nokogiri::XML::Comment.new(pom_document,comment)
|
34
|
+
modulesNode.add_next_sibling(commentNode)
|
35
|
+
dependencyHandler = DependencyHandler.new
|
36
|
+
pomObj = dependencyHandler.add_node_element('project',modulesNode,pom_document)
|
37
|
+
File.write("#{project_directory_path}/pom.xml",pomObj)
|
38
|
+
mvnReactorization = MvnReactorization.new
|
39
|
+
mvnReactorization.generateFormatedXml(project_directory_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def writeDistributionManagementInReactorPom (project_directory_path,distMgmtTag)
|
44
|
+
if !distMgmtTag.nil?
|
45
|
+
reactorPomPath = "#{project_directory_path}/pom.xml"
|
46
|
+
pom_document = @@reactorHandler.parse_xml_from_file(reactorPomPath)
|
47
|
+
comment = " TODO: The reactor service had moved the <distributionManagement> section of first project to reactor\'s POM and removed from all the child modules. Please review this section before deploying these artifacts"
|
48
|
+
commentNode = Nokogiri::XML::Comment.new(pom_document,comment)
|
49
|
+
distMgmtTag.first_element_child.before(commentNode)
|
50
|
+
dependencyHandler = DependencyHandler.new
|
51
|
+
pomObj = dependencyHandler.add_node_element('project',distMgmtTag,pom_document)
|
52
|
+
File.write(reactorPomPath,pomObj)
|
53
|
+
mvnReactorization = MvnReactorization.new
|
54
|
+
mvnReactorization.generateFormatedXml(project_directory_path)
|
55
|
+
puts "Moved distributionManagement to reactor pom!!!"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def removeDistributionManagementFromModules()
|
60
|
+
@@modulePomPaths.each do |modulePom|
|
61
|
+
pom_document = @@reactorHandler.parse_xml_from_file(modulePom)
|
62
|
+
distMgmtNode = pom_document.at('project/distributionManagement')
|
63
|
+
distMgmtNode.remove if !distMgmtNode.nil?
|
64
|
+
File.write(modulePom,pom_document)
|
65
|
+
end
|
66
|
+
puts "distributionManagement removed from child modules!!!"
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
class MvnReactorization
|
6
|
+
@@reactorHandler = ReactorHandler.new
|
7
|
+
@@dependencyHandler = DependencyHandler.new
|
8
|
+
def makeReactor(project_directory_path)
|
9
|
+
puts "Reactorization process is started"
|
10
|
+
raise 'Project path is nil' if project_directory_path.nil?
|
11
|
+
raise 'Project path is empty' if project_directory_path.empty?
|
12
|
+
raise 'Project path is invalid' unless Dir.exist?(project_directory_path)
|
13
|
+
pom_file_path = Pathname.new("#{project_directory_path}/pom.xml")
|
14
|
+
if !pom_file_path.exist?
|
15
|
+
pomName = createNewParentPom(project_directory_path)
|
16
|
+
cutPastePom("#{project_directory_path}/#{pomName}",project_directory_path)
|
17
|
+
end
|
18
|
+
artiFactArr = moduleInvoking(project_directory_path)
|
19
|
+
moduleWriter(project_directory_path,artiFactArr)
|
20
|
+
getParentPomArtifactId(project_directory_path)
|
21
|
+
removeChildModuleVersion(project_directory_path)
|
22
|
+
generateFormatedXml(project_directory_path)
|
23
|
+
`mvn com.github.ekryd.sortpom:sortpom-maven-plugin:sort`
|
24
|
+
puts "Reactor process successfully done"
|
25
|
+
end
|
26
|
+
|
27
|
+
def createNewParentPom(project_directory_path)
|
28
|
+
artifactArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,true)
|
29
|
+
gid = artifactArr[0]
|
30
|
+
artifactId = getRootDirName(project_directory_path)
|
31
|
+
version = artifactArr[2]
|
32
|
+
puts `mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DarchetypeVersion=RELEASE -DinteractiveMode=false -DgroupId=#{gid} -DartifactId=#{artifactId} -Dversion=#{version}`
|
33
|
+
pomPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
34
|
+
setprojectVersionInchildModule(pomPathArr,version)
|
35
|
+
return artifactId
|
36
|
+
end
|
37
|
+
|
38
|
+
def getRootDirName(project_directory_path)
|
39
|
+
rootDir = project_directory_path.split("/").last
|
40
|
+
return rootDir
|
41
|
+
end
|
42
|
+
|
43
|
+
def findHighestVersionOfPom(pomFileArr)
|
44
|
+
tempHash=Hash.new
|
45
|
+
pomFileArr.each do |eachPath|
|
46
|
+
pomDetArr = getDetails(eachPath)
|
47
|
+
version = pomDetArr[2]
|
48
|
+
numericVersion = version.split(/[^\d]/).join
|
49
|
+
eachValArr = numericVersion.split('')
|
50
|
+
sum=0
|
51
|
+
eachValArr.each do |char|
|
52
|
+
sum=sum+char.to_i
|
53
|
+
end
|
54
|
+
tempHash[version]=sum
|
55
|
+
end
|
56
|
+
tempVal=0
|
57
|
+
finalSnapShot =""
|
58
|
+
tempHash.each do |key,val|
|
59
|
+
if (val>tempVal)
|
60
|
+
tempVal = val
|
61
|
+
finalSnapShot = key
|
62
|
+
end
|
63
|
+
end
|
64
|
+
return finalSnapShot
|
65
|
+
end
|
66
|
+
|
67
|
+
def setprojectVersionInchildModule(pomPathArr,version)
|
68
|
+
pomPathArr.each do |eachPomPath|
|
69
|
+
file = File.open(eachPomPath)
|
70
|
+
pom_document = Nokogiri::XML(file)
|
71
|
+
file.close
|
72
|
+
projectNode = pom_document.at("project")
|
73
|
+
nokObj = Nokogiri::XML::Node
|
74
|
+
versionNode = nokObj.new("version",projectNode)
|
75
|
+
versionNode.content=version
|
76
|
+
if ( @@reactorHandler.tag_exists?('parent', pom_document))
|
77
|
+
projectNode.css("version")[1].remove
|
78
|
+
else
|
79
|
+
projectNode.css("version")[0].remove
|
80
|
+
end
|
81
|
+
projectNode.add_child(versionNode)
|
82
|
+
File.write(eachPomPath,projectNode)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def getDetails(pomfilePath)
|
87
|
+
artifactArr = Array.new
|
88
|
+
begin
|
89
|
+
xml_file = File.open(pomfilePath)
|
90
|
+
pom_document = Nokogiri::XML(xml_file, &:strict)
|
91
|
+
if @@reactorHandler.tag_exists?('groupId', pom_document)
|
92
|
+
gid= pom_document.search("project/groupId").first.inner_text
|
93
|
+
artId= pom_document.search("project/artifactId").first.inner_text
|
94
|
+
version= pom_document.search("project/version").first.inner_text
|
95
|
+
artifactArr.push(gid)
|
96
|
+
artifactArr.push(artId)
|
97
|
+
artifactArr.push(version)
|
98
|
+
return artifactArr
|
99
|
+
end
|
100
|
+
rescue
|
101
|
+
getDetails(pomfilePath)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def cutPastePom(pomName,project_directory_path)
|
106
|
+
FileUtils.mv("#{pomName}/pom.xml",project_directory_path)
|
107
|
+
FileUtils.rm_rf(pomName)
|
108
|
+
end
|
109
|
+
|
110
|
+
def moduleInvoking(project_directory_path)
|
111
|
+
childPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
112
|
+
artiFactArr = Array.new
|
113
|
+
childPathArr.each do |eachPath|
|
114
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPath)
|
115
|
+
moduleDir = moduleFinder(eachPath)
|
116
|
+
artiFactArr.push(moduleDir)
|
117
|
+
end
|
118
|
+
return artiFactArr
|
119
|
+
end
|
120
|
+
|
121
|
+
def moduleFinder(eachPath)
|
122
|
+
dirArr = Array.new
|
123
|
+
dir = File.expand_path("..", eachPath)
|
124
|
+
dirStr = dir.to_s
|
125
|
+
dirArr = dirStr.split("/")
|
126
|
+
moduleDir = dirArr[dirArr.length-1]
|
127
|
+
return moduleDir
|
128
|
+
end
|
129
|
+
|
130
|
+
def moduleWriter(project_directory_path,artiFactArr)
|
131
|
+
pom_file_path = Pathname.new("#{project_directory_path}/pom.xml")
|
132
|
+
pomDocument = @@reactorHandler.parse_xml_from_file(pom_file_path)
|
133
|
+
if !@@reactorHandler.tag_exists?('modules', pomDocument)
|
134
|
+
nokmoduleObj = Nokogiri::XML::Node
|
135
|
+
modulenode = nokmoduleObj.new("modules",pomDocument)
|
136
|
+
artiFactArr.each do |eachArtifact|
|
137
|
+
nokEachArtifact = Nokogiri::XML::Node
|
138
|
+
nokEachArtifactNode = nokEachArtifact.new("module",pomDocument)
|
139
|
+
nokEachArtifactNode.add_child(eachArtifact)
|
140
|
+
modulenode.add_child(nokEachArtifactNode)
|
141
|
+
end
|
142
|
+
pom_nokogiri = @@dependencyHandler.add_node_element('project', modulenode, pomDocument)
|
143
|
+
File.write(pom_file_path, pom_nokogiri)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def getParentPomArtifactId(project_directory_path)
|
148
|
+
pom_file_path = Pathname.new("#{project_directory_path}/pom.xml")
|
149
|
+
pomDetailsArr = getDetails(pom_file_path)
|
150
|
+
childPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
151
|
+
childPathArr.each do |eachPath|
|
152
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPath)
|
153
|
+
pom_nokogiri = addParentTag(pom_document,pomDetailsArr)
|
154
|
+
File.write(eachPath, pom_nokogiri)
|
155
|
+
filteredPath = eachPath.chomp("/pom.xml")
|
156
|
+
generateFormatedXml(filteredPath)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def addParentTag(pom_document,pomDetailsArr)
|
161
|
+
parentObj = Nokogiri::XML::Node
|
162
|
+
if @@reactorHandler.tag_exists?("parent", pom_document)
|
163
|
+
pom_document.search('project/parent').remove
|
164
|
+
end
|
165
|
+
parentNode = parentObj.new("parent",pom_document)
|
166
|
+
grpObj = Nokogiri::XML::Node
|
167
|
+
grpNode = parentObj.new("groupId",pom_document)
|
168
|
+
artifactObj = Nokogiri::XML::Node
|
169
|
+
artifactNode = parentObj.new("artifactId",pom_document)
|
170
|
+
versionObj = Nokogiri::XML::Node
|
171
|
+
versionNode = parentObj.new("version",pom_document)
|
172
|
+
grpNode.add_child(pomDetailsArr[0])
|
173
|
+
artifactNode.add_child(pomDetailsArr[1])
|
174
|
+
versionNode.add_child(pomDetailsArr[2])
|
175
|
+
parentNode.add_child(grpNode)
|
176
|
+
parentNode.add_child(artifactNode)
|
177
|
+
parentNode.add_child(versionNode)
|
178
|
+
pom_nokogiri = @@dependencyHandler.add_node_element('project', parentNode, pom_document)
|
179
|
+
return pom_nokogiri
|
180
|
+
end
|
181
|
+
|
182
|
+
def generateFormatedXml(project_directory_path)
|
183
|
+
raise 'Project path is nil' if project_directory_path.nil?
|
184
|
+
raise 'Project path is empty' if project_directory_path.empty?
|
185
|
+
raise 'Project path is invalid' unless Dir.exist?(project_directory_path)
|
186
|
+
pom_file_path = Pathname.new("#{project_directory_path}/pom.xml")
|
187
|
+
formatedDoc = Nokogiri.XML(File.open(pom_file_path)) do |config|
|
188
|
+
config.default_xml.noblanks
|
189
|
+
end
|
190
|
+
write_nokogiri_to_xml(pom_file_path,formatedDoc)
|
191
|
+
end
|
192
|
+
|
193
|
+
def write_nokogiri_to_xml(file_path, nokogiri_obj)
|
194
|
+
raise 'Supplied output file path is nil' if file_path.nil?
|
195
|
+
raise 'Nokogiri Object Nil error' if nokogiri_obj.nil?
|
196
|
+
File.write(file_path, nokogiri_obj.to_xml)
|
197
|
+
end
|
198
|
+
|
199
|
+
def removeChildModuleVersion(project_directory_path)
|
200
|
+
childPomArrPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false)
|
201
|
+
childPomArrPathArr.each do |eachPath|
|
202
|
+
pom_document = @@reactorHandler.parse_xml_from_file(eachPath)
|
203
|
+
pom_document.at_css("project/version").remove
|
204
|
+
File.write(eachPath, pom_document)
|
205
|
+
end
|
206
|
+
puts "Remove version is done"
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|