@@ -35,14 +35,69 @@ dependencies {
35
35
* The plugin descriptor file is generated automatically by [generatePluginDescriptor].
36
36
*/
37
37
38
- def pomFile = file(" ./src/main/ resources/pom.xml" )
38
+ def generatedPomFile = file(" ./build/ resources/generated /pom.xml" )
39
39
def outputDirectory = project. buildDir. toPath(). resolve(" classes/kotlin/main" )
40
40
def pluginDescriptorFile = new File (" $outputDirectory /META-INF/maven/plugin.xml" )
41
41
42
+ /**
43
+ * Generates the pom.xml file and saves it to the [generatedPomFile].
44
+ */
45
+ task generatePomFile () {
46
+ def rootNode = new Node (null , " project" , [
47
+ ' xmlns' : ' http://maven.apache.org/POM/4.0.0' ,
48
+ ' xsi:schemaLocation' : ' http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd' ,
49
+ ' xmlns:xsi' : ' http://www.w3.org/2001/XMLSchema-instance'
50
+ ])
51
+
52
+ rootNode. with {
53
+ appendNode(' modelVersion' , ' 4.0.0' )
54
+ appendNode(' groupId' , ' org.utbot' )
55
+ appendNode(' artifactId' , ' utbot-maven' )
56
+ appendNode(' version' , this . project. version)
57
+ appendNode(' packaging' , ' maven-plugin' )
58
+
59
+ appendNode(' build' ). with {
60
+ // paths relative to src/main/resources
61
+ appendNode(' directory' , ' ../../../build' )
62
+ appendNode(' outputDirectory' , ' ../../../build/classes/kotlin/main' )
63
+ }
64
+
65
+ appendNode(' dependencies' ). with {
66
+ appendNode(' dependency' ). with {
67
+ appendNode(' groupId' , ' org.utbot' )
68
+ appendNode(' artifactId' , ' utbot-framework' )
69
+ appendNode(' version' , this . project. version)
70
+ appendNode(' scope' , ' compile' )
71
+ }
72
+ }
73
+ }
74
+
75
+ def repositoriesNode = rootNode. appendNode(' repositories' )
76
+ project. repositories. indexed(). forEach { index , repository ->
77
+ repositoriesNode. appendNode(' repository' ). with {
78
+ appendNode(' id' , " ${ repository.name} _${ index} " ) // unique id
79
+ appendNode(' url' , repository. url)
80
+ }
81
+ }
82
+
83
+ // creating `generatedPomFile` if it is not exist
84
+ generatedPomFile. parentFile. mkdirs()
85
+ generatedPomFile. createNewFile()
86
+
87
+ // printing xml content to `generatedPomFile`
88
+ def printer = new XmlNodePrinter (new PrintWriter (new FileWriter (generatedPomFile)))
89
+ printer. with {
90
+ // pretty print
91
+ preserveWhitespace = true
92
+ expandEmptyElements = true
93
+ }
94
+ printer. print (rootNode)
95
+ }
96
+
42
97
/**
43
98
* Generates the plugin descriptor file and saves it to the [pluginDescriptorFile].
44
99
*/
45
- task generatePluginDescriptor (type : JavaExec , dependsOn : compileKotlin) {
100
+ task generatePluginDescriptor (type : JavaExec , dependsOn : [ compileKotlin, generatePomFile] ) {
46
101
inputs. files project. compileKotlin. outputs. files
47
102
outputs. file pluginDescriptorFile
48
103
@@ -53,7 +108,7 @@ task generatePluginDescriptor(type: JavaExec, dependsOn: compileKotlin) {
53
108
args = [
54
109
' --errors' ,
55
110
' --batch-mode' ,
56
- ' --file' , " ${ pomFile .path} " ,
111
+ ' --file' , " ${ generatedPomFile .path} " ,
57
112
' org.apache.maven.plugins:maven-plugin-plugin:3.6.0:descriptor' ,
58
113
' -Dproject.build.sourceEncoding=UTF-8'
59
114
]
@@ -77,15 +132,8 @@ publishing {
77
132
* Therefore, we have to override the generated file with our own, stored in resources.
78
133
*/
79
134
generatePomFileForPluginMavenPublication. doLast {
80
- def ourOwnPomXml = new XmlParser (). parse(pomFile)
81
- def generatedPomFile = new File (" ./build/publications/pluginMaven/pom-default.xml" )
82
- def printer = new XmlNodePrinter (new PrintWriter (new FileWriter (generatedPomFile)))
83
- printer. with {
84
- // pretty print
85
- preserveWhitespace = true
86
- expandEmptyElements = true
87
- }
88
- printer. print (ourOwnPomXml)
135
+ def pomFileFromMavenPublish = file(" ./build/publications/pluginMaven/pom-default.xml" )
136
+ pomFileFromMavenPublish. write(generatedPomFile. text)
89
137
}
90
138
91
139
// the plugin jar file should contain the plugin descriptor file
0 commit comments