Skip to content

[MNG-5913] Allow defining aliases for existing server configurations in settings.xml #2333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

slawekjaranowski
Copy link
Member

Add the next tag ids to the server in settings.xml

Additional server will be created in memory by SettingsBuilder, so the generated configuration should be transparent to other as Settings#getServers() will return complete list.


https://issues.apache.org/jira/browse/MNG-5913

@slawekjaranowski slawekjaranowski added the enhancement New feature or request label May 13, 2025
@slawekjaranowski slawekjaranowski self-assigned this May 13, 2025
@cstamas
Copy link
Member

cstamas commented May 13, 2025

This needs to be made sure will not break Maven 3, as same settings is shared by both currently.

@slawekjaranowski
Copy link
Member Author

This needs to be made sure will not break Maven 3, as same settings is shared by both currently.

unit test, looks ok for me.

I tested with: mvn help:effective-settings

@slawekjaranowski
Copy link
Member Author

ok, who is willing to work on it with me?
If proposition will be generally accepted I will do similar in 3.9.x

I hope such feature will be valuable.

@cstamas
Copy link
Member

cstamas commented May 14, 2025

Well, settings with current 3.9.9 are NOT read:

[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unrecognised tag: 'aliases' (position: START_TAG seen ...</id>\n     <aliases>... @61:15)  @ /home/cstamas/.m2/settings.xml, line 61, column 15
[WARNING] 

Or this is "ok"? Is settings loaded partially or discaded?

@cstamas
Copy link
Member

cstamas commented May 14, 2025

I am willing to jump in as Njord does something similar, but my concern is that Maven 3.x is not "forgiving" while readint settings.xml AFAIK. And if we modify XML then things like ./mvnw will work ONLY (for user) if 3.9.10 used?

@slawekjaranowski
Copy link
Member Author

Well, settings with current 3.9.9 are NOT read:

[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unrecognised tag: 'aliases' (position: START_TAG seen ...</id>\n     <aliases>... @61:15)  @ /home/cstamas/.m2/settings.xml, line 61, column 15
[WARNING] 

Or this is "ok"? Is settings loaded partially or discaded?

it is correct because 3.9.x does not have it yet

@slawekjaranowski
Copy link
Member Author

I am willing to jump in as Njord does something similar, but my concern is that Maven 3.x is not "forgiving" while readint settings.xml AFAIK. And if we modify XML then things like ./mvnw will work ONLY (for user) if 3.9.10 used?

I hope we can have next version of settings schema for 3.9.x ... so if someone update own settings alos will use newer version of Maven

Copy link
Contributor

@Pankraz76 Pankraz76 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

already very nice.
please give last dedication, to reach infinitive higher-order function.

Copy link
Contributor

@Pankraz76 Pankraz76 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

polish

@slawekjaranowski
Copy link
Member Author

@gnodet @Pankraz76 last suggestions applied

Copy link
Contributor

@Pankraz76 Pankraz76 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

init by default

@Pankraz76
Copy link
Contributor

Pankraz76 commented May 15, 2025

why we need to change deprecated stuff?

PMD or rewrite, might even do both.
Spot seems ending up being short:

@slawekjaranowski
Copy link
Member Author

why we need to change deprecated stuff?

Found this one related:

deprecated staff can be used by Maven 3 plugins - we need support backward compatibility for Maven 3.x

@slawekjaranowski
Copy link
Member Author

@gnodet @cstamas any more comments for it?

I will cleanups from comments and will be ready.

@cstamas
Copy link
Member

cstamas commented May 17, 2025

I am still unconvinced that this change is backward compatible. Or the idea is that whoever uses this feature must use Maven 4 or latest (upcoming) Maven 3.9.10? What happens if by mistake (or project mvnw) is 3.9.9 or 3.8.8?

@slawekjaranowski
Copy link
Member Author

I am still unconvinced that this change is backward compatible. Or the idea is that whoever uses this feature must use Maven 4 or latest (upcoming) Maven 3.9.10? What happens if by mistake (or project mvnw) is 3.9.9 or 3.8.8?

Confirm - for new future Maven 4.x (rc-4+) and 3.9.10+ will be needed.

Such futures will be needed for deployments or for special environments where users use more private repositories.
So if user want to use it simply needs the latest version of Maven.

For older Maven warning will be printed.

@cstamas
Copy link
Member

cstamas commented May 17, 2025

For older Maven warning will be printed.

I am aware of warning, but am unaware what exactly happens when that warning is printed: is whole settings ignored, is only the server (with unknown element) ignored... Given we talk about same file that all Maven 3+ would use, I think we need to be careful here. Maven is already printing a LOT to screen, is very easy to miss one line warning and then tinker why build/deploy/whatever failed...

@slawekjaranowski
Copy link
Member Author

As I see from my testing only unparsable settings.xml break a Maven build at all
settings.xml with correct xml syntax, but with unkown tags are processed, all recognized settings are correctly read

I can add IT for such case - what happens with unrecognized tag in settings.xml - in separate PR if can help you

…in settings.xml

Add the next tag ids to the server in settings.xml

Additional server will be created in memory by SettingsBuilder,
so the generated configuration should be transparent to other
as Settings#getServers() will return complete list.
@slawekjaranowski
Copy link
Member Author

Kindly reminder - Any more comments here? Anything what I can do more ...?

If there are no more requests, I would like to merge it

Copy link
Member

@michael-o michael-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I consider it as confusing having <id/> and <ids/> as subelements. I think this needs to be in Maven 4 first, RC and then in 3.9.x. I think that one server element should have a unique ID and then <aliases/>.

There is also a JIRA issue which requests to completely decouple credentials from server elements. Which makes creds reusable throughout.

@michael-o
Copy link
Member

Looking at this I am still convinced that is should not be delivered with 3.9.10.

@michael-o
Copy link
Member

@michael-o
Copy link
Member

Yet another problem is that we are abusing one server structure for multiple ones, e.g., you are settings headers or other transport-related config. It will be applied to mulitple servers, but you need to split them up actually except credentials.

@jira-importer
Copy link

Resolve #7757

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants