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.
Files changed (31) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/Gemfile +6 -0
  4. data/README.md +35 -0
  5. data/Rakefile +2 -0
  6. data/bin/console +14 -0
  7. data/bin/mavenReactorization +7 -0
  8. data/bin/setup +8 -0
  9. data/lib/mavenReactorService.rb +5 -0
  10. data/lib/mavenReactorService/BasicInfoHandler.rb +173 -0
  11. data/lib/mavenReactorService/DMAndPMManagementForExternalConfiguration.rb +205 -0
  12. data/lib/mavenReactorService/DependencyHandler.rb +264 -0
  13. data/lib/mavenReactorService/DependencyManagementHandler.rb +183 -0
  14. data/lib/mavenReactorService/DeveloperAndContributors.rb +130 -0
  15. data/lib/mavenReactorService/InterDependencyHandler.rb +87 -0
  16. data/lib/mavenReactorService/MergeRepository.rb +98 -0
  17. data/lib/mavenReactorService/MoveCommonPropertiesToRootPom.rb +83 -0
  18. data/lib/mavenReactorService/MoveDistributionManagement.rb +68 -0
  19. data/lib/mavenReactorService/MvnReactorization.rb +209 -0
  20. data/lib/mavenReactorService/ParentPomHandler.rb +71 -0
  21. data/lib/mavenReactorService/PluginConfigurationHandler.rb +106 -0
  22. data/lib/mavenReactorService/PluginHandler.rb +292 -0
  23. data/lib/mavenReactorService/PluginManagementHandler.rb +391 -0
  24. data/lib/mavenReactorService/PropertyHandler.rb +129 -0
  25. data/lib/mavenReactorService/ReactorCommands.rb +49 -0
  26. data/lib/mavenReactorService/ReactorHandler.rb +309 -0
  27. data/lib/mavenReactorService/SiteAndEclipsePluginHandler.rb +105 -0
  28. data/lib/mavenReactorService/ValidateProjects.rb +70 -0
  29. data/lib/mavenReactorService/version.rb +3 -0
  30. data/mavenReactorService.gemspec +39 -0
  31. 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
+