Converting settings.xml and pom.xml from Maven to build.gradle in Gradle involves translating Maven's repository settings, profiles, mirrors, and authentication details into Gradle's DSL for java application. Here’s how to do it step by step:
1. Identify Relevant Sections in settings.xml
Maven’s settings.xml typically contains:
- Repositories
(central, mirrors, etc.)
- Authentication
credentials (server credentials)
- Profiles
(used to define custom build configurations)
- Active
profiles (which profile is in use)
Profiles
Gradle uses properties instead of profiles. Convert
Maven profiles into Gradle properties:
ext { isCustomProfileEnabled =
project.hasProperty('customProfile') } repositories
{ if (isCustomProfileEnabled) { maven { url
"https://your.company.com/repository/maven-releases/" } } } |
Final Thoughts
- Repositories:
Move <repositories> and <mirrors> into Gradle’s repositories
block.
- Authentication:
Use credentials {} inside maven {} and avoid hardcoding passwords.
- Profiles:
Use Gradle properties (-PprofileName) instead of Maven <profiles>.
- Global
Configuration: Use an init.gradle file if you need settings for
multiple projects.
1. Identify Key Sections in pom.xml
Your pom.xml includes:
- Basic
project metadata (groupId, artifactId, version)
- Properties
(JDK version, dependencies versions, encoding, etc.)
- Build
plugins (not listed yet but will be needed)
Maven (pom.xml) |
Gradle (build.gradle) |
<groupId>com.kartik.1kcm</groupId> |
group = 'com.kartik.1kcm' |
<artifactId>KartikInterface</artifactId> |
artifactId is not explicitly needed in Gradle.
This is declare in settings.gradle file rootProject.name=KartikInterface |
<version>${revision}</version> |
version = project.findProperty('revision') ?:
'1.0.1-SNAPSHOT' |
<properties> |
Converted to Gradle
properties (project.findProperty('propertyName')) |
<jdk.version>17</jdk.version> |
sourceCompatibility = JavaVersion.VERSION_17 |
<maven.compiler.source>17</maven.compiler.source> |
sourceCompatibility = JavaVersion.VERSION_17 |
<maven.compiler.target>17</maven.compiler.target> |
targetCompatibility = JavaVersion.VERSION_17 |
<revision>1.0.1-SNAPSHOT</revision> |
Handled via project.findProperty('revision') |
<commons-cli-version>1.3.1</commons-cli-version> |
Used in dependencies section |
<skipTests>true</skipTests> |
tasks.withType(Test) { enabled = false } |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
options.encoding = 'UTF-8' |
Here is the equivalent build.gradle file for your Maven
pom.xml, Learn Gradle syntax:
|
Maven to Gradle convert
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins </groupId> <artificateId>maven-depnedency-plugin</artificateId> <version>2.2</version> <executions> <execution> <id>unpack-COVID19-rh7</id> <phase>prepare-package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <groupId>com.kcm.quotation</groupId> <artificateId>Covid19_rh7_64_release-gcc11.2.1</artificateId> <version>222.22.2</version> <includeGroupIds>com.kcm.quotation</includeGroupIds> <includeArtificateIds>Covid19_rh7_64_release-gcc11.2.1</includeArtificateIds> <includeVersion>222.22.2</includeVersion> <includes>**</includes> <outputDiretcory>${project.build.diretcory}/lib_COVID19/linux</outputDiretcory> </configuration> </execution> <execution> <id>unpack-COVID19-win64</id> <phase>prepare-package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <groupId>com.kcm.quotation</groupId> <artificateId>Covid19_rh7_64_release-gcc11.2.1</artificateId> <version>222.22.2</version> <includeGroupIds>com.kcm.quotation</includeGroupIds> <includeArtificateIds>Covid19_win_x64_release-vs222</includeArtificateIds> <includeVersion>222.22.2</includeVersion> <includes>**</includes> <outputDiretcory>${project.build.diretcory}/lib_COVID19/windows</outputDiretcory> </configuration> </execution> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDiretcory>${project.build.diretcory}/lib</outputDiretcory> <includeTypes>jar</includeTypes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins </groupId> <artificateId>maven-antrun-plugin</artificateId> <version>1.7</version> <executions> <execution> <id>copy-COVID19</id> <phase>prepare-package</phase> <goals> <goal>run</goal> </goals> <configuration> <target
name="copy Covid19 libary"> <copy
todir="${project.build.diretcory}/extlib/windows"> <fileset
dir="${project.build.diretcory}/lib_COVID19"> <inlcude
name="**/*.dll*"/> <inlcude
name="**/*.DLL*"/> </fileset> <mapper
type="flatten"/> </copy> <copy
todir="${project.build.diretcory}/extlib/linux"> <fileset
dir="${project.build.diretcory}/lib_COVID19"> <inlcude
name="**/*.so*"/> </fileset> <mapper
type="flatten"/> </copy> </target> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artificateId>maven-assembly-plugin</artificateId> <version>3.7.1</version> <executions> <execution> <id>KcmInterface</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <outputDiretcory>${project.build.diretcory}/assemblies</outputDiretcory> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>
${project.basedir}KcmInterface.xml</descriptor> </descriptors> <fileName>KcmInterface</fileName> </configuration> </execution> </executions> </plugin> </build> |
Gradle
Convert for inside maven build with so many plugin, execution goals and
configuration |
tasks.register(“unpackCOVID19Rh7”, Copy) { from
configurations.runtimeClasspath into
"${project.build.directory}/lib_COVID19/linux" include
'**' }
tasks.register(“unpackCOVID19Win64”, Copy) { from
configurations.runtimeClasspath into
"${ project.build.directory}/lib_COVID19/windows" include
'**' }
tasks.register(“copyDependencies”, Copy) { from
configurations.runtimeClasspath into
"${project.build.directory}/lib" include
'**/*.jar' }
tasks.register(“copyCOVID19Library”, Copy) {
from("${buildDir}/lib_COVID19") { include
'**/*.dll*', '**/*.DLL*' } into
"${project.build.directory}/extlib/windows" eachFile {
fileCopyDetails -> fileCopyDetails.path = fileCopyDetails.name }
includeEmptyDirs = false }
tasks.register(“copyCOVID19LibraryLinux”, Copy) {
from("${project.build.directory}/lib_COVID19") { include
'**/*.so*' } into
"${project.build.directory}/extlib/linux" eachFile {
fileCopyDetails -> fileCopyDetails.path = fileCopyDetails.name }
includeEmptyDirs = false }
tasks.register(“createAssembly”, Zip) {
from("${project.build.directory}/KcmInterface.xml") into
"${project.build.directory}/assemblies"
archiveFileName = "KcmInterface.zip" } |
Maven pom.xml file
<build> <plugins> <plugin> <artificateId>maven-compiler-plugin</artificateId> <version>3.10.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artificateId>maven-jar-plugin</artificateId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.kcm.kamical-management</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artificateId>maven-depnedency-plugin</artificateId> <version>2.2</version> <executions> <execution> <id>unpack-COVID19-rh7</id> <phase>prepare-package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <groupId>com.kcm.quotation</groupId> <artificateId>Covid19_rh7_64_release-gcc11.2.1</artificateId> <version>222.22.2</version> <includeGroupIds>com.kcm.quotation</includeGroupIds> <includeArtificateIds>Covid19_rh7_64_release-gcc11.2.1</includeArtificateIds> <includeVersion>222.22.2</includeVersion> <includes>**</includes> <outputDiretcory>${project.build.diretcory}/lib_COVID19/linux</outputDiretcory> </configuration> </execution> <execution> <id>unpack-COVID19-win64</id> <phase>prepare-package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <groupId>com.kcm.quotation</groupId> <artificateId>Covid19_rh7_64_release-gcc11.2.1</artificateId> <version>222.22.2</version> <includeGroupIds>com.kcm.quotation</includeGroupIds> <includeArtificateIds>Covid19_win_x64_release-vs222</includeArtificateIds> <includeVersion>222.22.2</includeVersion> <includes>**</includes> <outputDiretcory>${project.build.diretcory}/lib_COVID19/windows</outputDiretcory> </configuration> </execution> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDiretcory>${project.build.diretcory}/lib</outputDiretcory> <includeTypes>jar</includeTypes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins </groupId> <artificateId>maven-antrun-plugin</artificateId> <version>1.7</version> <executions> <execution> <id>copy-COVID19</id> <phase>prepare-package</phase> <goals> <goal>run</goal> </goals> <configuration> <target
name="copy Covid19 libary"> <copy
todir="${project.build.diretcory}/extlib/windows"> <fileset
dir="${project.build.diretcory}/lib_COVID19"> <inlcude
name="**/*.dll*"/> <inlcude
name="**/*.DLL*"/> </fileset> <mapper
type="flatten"/> </copy> <copy
todir="${project.build.diretcory}/extlib/linux"> <fileset
dir="${project.build.diretcory}/lib_COVID19"> <inlcude
name="**/*.so*"/> </fileset> <mapper
type="flatten"/> </copy> </target> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artificateId>maven-assembly-plugin</artificateId> <version>3.7.1</version> <executions> <execution> <id>KcmInterface</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <outputDiretcory>${project.build.diretcory}/assemblies</outputDiretcory> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>
${project.basedir}KcmInterface.xml</descriptor> </descriptors> <fileName>KcmInterface</fileName> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artificateId>maven-surefire-plugin</artificateId> <version>2.22.2</version> <executions> <configuration> <outputDiretcory>${project.build.diretcory}/test</outputDiretcory> <appendAssemblyId>false</appendAssemblyId> <fileName>KcmInterface-Test</fileName> </configuration> </executions> </plugin> <plugin> <groupId>org.jacoco</groupId> <artificateId>jacoco-maven-plugin</artificateId> <version>0.8.8</version> <configuration> <destFile>${basedir}/target/coverage-reports/jacoco-units.exec</destFile> <detaFile>${basedir}/target/coverage-reports/jacoco-units.exec</detaFile> </configuration> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </build> |
Gradle similar to above pom
plugins { id 'java' id 'maven-publish' id 'jacoco' id 'application' } java { toolchain { languageVersion.set(JavaLanguageVersion.of(System.getProperty("jdk.version").toInteger())) } } application { mainClass = 'com.kcm.kamical-management' } tasks.withType(JavaCompile).configureEach
{ options.encoding =
System.getProperty("project.build.sourceEncoding",
"UTF-8") } dependencies
{ implementation 'com.kcm.quotation:Covid19_rh7_64_release-gcc11.2.1:222.22.2@zip' implementation 'com.kcm.quotation:Covid19_win_x64_release-vs222:222.22.2@zip' } tasks.register("copyDependencies",
Copy) { from configurations.runtimeClasspath into "$buildDir/lib" include '*.jar' } tasks.register("unpackCovid19Rh7",
Copy) { from
zipTree(configurations.runtimeClasspath.find { it.name.contains('Covid19_rh7_64_release-gcc11.2.1')
}) into "$buildDir/lib_COVID19/linux" } tasks.register("unpackCovid19Win64",
Copy) { from
zipTree(configurations.runtimeClasspath.find { it.name.contains('Covid19_win_x64_release-vs222')
}) into "$buildDir/lib_COVID19/windows" } tasks.register("copyCovid19Library",
Copy) { into "$buildDir/extlib/windows" from "$buildDir/lib_COVID19" include '**/*.dll', '**/*.DLL' eachFile { details -> details.path = details.name } } tasks.register("copyCovid19LibraryLinux",
Copy) { into "$buildDir/extlib/linux" from "$buildDir/lib_COVID19" include '**/*.so' eachFile { details -> details.path = details.name } } jacoco { toolVersion = "0.8.8" } tasks.register("jacocoReport",
JacocoReport) { dependsOn test reports { xml.required.set(true) csv.required.set(false) html.required.set(true) } executionData
file("$buildDir/jacoco/test.exec") sourceSets sourceSets.main } tasks.withType(Test).configureEach
{ finalizedBy tasks.jacocoReport } jar { manifest { attributes 'Main-Class':
'com.kcm.kamical-management' } } tasks.register("createAssembly",
Zip) {
archiveFileName.set("KcmInterface.zip")
destinationDirectory.set(file("$buildDir/assemblies"))
from("$rootDir/KcmInterface.xml") } tasks.register("surefireTest",
Test) { reports.html.destination =
file("$buildDir/test") } |
For Tools information, visit:
Ø
Auto-Update
Batch File with Latest JAR & Start App Automatically
Ø
Connecting
to IBM WebSphere MQ in Java
Ø
How
to create maven project
Ø
VisualVM
monitoring like jconsole
Ø
Stylus
studio convert edifact message
Ø
JConsole
Monitoring for Java Standalone or Web application project
Ø Apache
Cluster router load balancer
Ø
Generate
a Token in Sonatype Nexus & Use It in Maven & Jenkins
Ø
CI/CD
Pipeline in Jenkins: Staging & Production Artifact Flow in java app
Ø
Master
in CI/CD pipeline using Maven with java
For Design information, visit:
Ø
Mastering
Design Patterns Practical Implementation Tips
Ø
How
to draw sequence diagram and other diagrams using plantuml
Ø
Time
Analysis for Congested Routes Using Shortest Path Algorithms
Ø Passive
Infrared (PIR) sensors understand and implementation by java
For Math information, visit:
Ø
Calculating
the area of a triangle
Ø
The
method for calculating the area of a rectangle in Java
Ø
The value of π =
3.14159 in java [Click
Here]
Maven settings.xml & pom.xml to Gradle build.gradle |
0 Comments