-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededproposalIdea proposalIdea proposalquestionFurther information is requestedFurther information is requested
Milestone
Description
What is the purpose of the new goal?
Today, the add-dep
add or update dependencies into the default profile, which means, into the project/dependencies
XML node.
Many projects are using profiles for many purposes, but such profiles are allowed to manage their own dependencies.
With that, it's needed to enhance the add-dep
to add or update dependencies into a specific profile.
What is the expected behavior and output of the new goal?
Goal syntax:
$ mvn pom-editor:add-dep -Dprofile=<TARGET PROFILE> -Dforce=true -Dgav=<DEPENDENCY COORDINATES>
New inputs:
Property | Description |
---|---|
profile | the target profile that the dependency should be added |
force | force to create the target profile if it doesn't exist at the target POM |
⚠️ Warning
This execution causes a side-effect into the target POM, then the backup process must keeping working.
Expected behavior and outcomes:
Scenario 01:
- Given the necessity to add or update a given dependency into an existent profile in a given POM
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.arrudalabs</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>profileA</id>
<dependencies>
<dependency>
<groupId>a</groupId>
<artifactId>a</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
- When the
add-dep
goal is executed with a given dependency info plus the-Dprofile=profileA
property
$ mvn pom-editor:add-dep -Dprofile='profileA' -Dgav='a:a:1.1'
- Then the
add-dep
goal should add or update the given dependency into the dependencies XML node from the target profile;
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.arrudalabs</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>profileA</id>
<dependencies>
<dependency>
<groupId>a</groupId>
<artifactId>a</artifactId>
<version>1.1</version> <!-- updated version -->
</dependency>
</dependencies>
</profile>
</profiles>
</project>
Scenario 02:
- Given the necessity to add or update a given dependency into a profile that doesn't exist in the target POM
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.arrudalabs</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
- When the
add-dep
goal is executed with a given dependency info plus the-Dprofile=profileA
only
$ mvn pom-editor:add-dep -Dprofile='profileA' -Dgav='a:a:1.1'
- Then the goal should alert an error explaining that the provided profile doesn't exist.
[ERROR] error to add or update the dependency: {groupId='a', artifactId='a', version='1.1'} in the "profileA" profile's dependencies into the pom: pom.xml: "profileA" profile doesn't exist.
Scenario 03:
- Given the necessity to add or update a given dependency into a profile that doesn't exist in the target POM
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.arrudalabs</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
- When the
add-dep
goal is executed with a given dependency info plus the-Dprofile=profileA
property, and-Dforce=true
property
$ mvn pom-editor:add-dep -Dprofile='profileA' -Dforce=true -Dgav='a:a:1.1'
- Then the goal should create the target profile with the provided dependency into its dependencies XML node
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.arrudalabs</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>profileA</id> <!-- profile was created -->
<dependencies>
<dependency>
<groupId>a</groupId>
<artifactId>a</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededproposalIdea proposalIdea proposalquestionFurther information is requestedFurther information is requested
Type
Projects
Status
No status