seems nisse can also not handle this situation
----------------
I know if I add this to maven 4 it can work
Index:
impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git
a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
---
a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
(revision 5a33f4b24cf97bc7df5ac467b41d90c150571889)
+++
b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
(date 1760427656771)
@@ -1219,6 +1219,11 @@
String groupId = parent.getGroupId();
String artifactId = parent.getArtifactId();
String version = parent.getVersion();
+
+ for (Map.Entry<String, String> entry :
childModel.getProperties().entrySet()) {
+ version = version.replace("${" + entry.getKey() + "}",
entry.getValue());
+ }
+
String classifier = parent instanceof Mixin ? ((Mixin)
parent).getClassifier() : null;
String extension = parent instanceof Mixin ? ((Mixin)
parent).getExtension() : null;
but I shouldn't, because I read
https://cwiki.apache.org/confluence/display/MAVENOLD/Automatic+Parent+Versioning
,
according to it:
When maven installs or deploys an artifact the pom is copied from the
source directory to the local or remote repository without modification. So
a pom that looks like
<project>
...
<groupId>org.apache.maven</groupId>
<artifactId>demo</groupId>
<version>${myVersion}</version>
</project>
and where myVersion is set to 1.0.0 will be deployed to
/org/apache/maven/demo/1.0.0/demo-1.0.0.pom and will still contain
${myVersion} as the "value" of the version element. This could lead to the
odd case of a dependency being specified with 1.0.0 as the version and
myVersion never being specified, or worse being set to a value other than
1.0.0. If one were to assume that item 1 above was the be fixed then this
issue must also be addressed. If a project is deployed with its parent
version (or any of the other parent elements) set to variables then it is
impossible to guarantee that the build will always be reproducable since
the parent version variable would have to be set either in a settings file
or from the command line, neither of which can be guaranteed from one build
to the next. Worse, any project that has a dependency on such a project
would also have to define the variable in a settings file or on the command
line.
I think it be correct for parent version as well, so I have to modify the
flatten plugin as well, thus the deployed pom be flattened.
Though I have to find a way to avoid abusion of this, means deploy a
missing-parent-version pom to central and cause unreproducable....
So maybe the best choice for me is enjoy the modified maven version
locally by myself...for this repo at least needn't be deployed; it just
need to build a docker image and we use that image in our production...
Tamás Cservenák <[email protected]> 于2025年10月16日周四 01:57写道:
> Howdy,
>
> And not to mention, how Nisse works with Maven 3 as well, without the
> need for the flatten plugin.
> When extension is present, version can contain ANY expression, the
> only requirement is to HAVE VALUE.
> Also, Nisse (automatically) collects properties that need inlining
> (user can extend configure more) and inlines them.
>
> https://github.com/maveniverse/nisse
>
> Thanks
> T
>
> On Wed, Oct 15, 2025 at 6:45 AM Guillaume Nodet <[email protected]> wrote:
> >
> > Can't you use Maven 4, where CI-friendly properties aren't restricted
> > anymore and where the version for the whole reactor can be set by a
> > property, or even using an extension ?
> > JLine does that now : the property is defined by the nisse extension,
> > automatically computed from the git history, and defined in a single
> place,
> > in the root pom.
> > The children just inherit this version.
> > https://github.com/jline/jline3/blob/master/pom.xml#L16
> >
> > Le mar. 14 oct. 2025 à 11:24, Xeno Amess <[email protected]> a écrit :
> >
> > > I found out even if I extend the CI-Friendly versions can't I find a
> good
> > > way to implement what I want, means declaring parent version from
> > > properties.
> > > If I really want it I have to modify maven to allow the pom be read,
> and
> > > modify flatten to flatten the version in parent, then add a validator
> for
> > > deploying to avoid some people pass a dynamic parent version to
> remote...
> > >
> > > Christoph Läubrich <[email protected]> 于2025年10月14日周二 17:06写道:
> > >
> > > > Mavens CI-Friendly versions are extensible, see for example:
> > > >
> > > >
> > > >
> > >
> https://github.com/eclipse-tycho/tycho/blob/main/tycho-build/src/main/java/org/eclipse/tycho/build/TychoCiFriendlyVersions.java
> > > >
> > > > but you need to know them by name due to how they work, so there
> can't
> > > > be a simple prefix.
> > > >
> > > >
> > > > Am 14.10.25 um 11:02 schrieb Xeno Amess:
> > > > > findout I have to modify both maven and flatten-plugin to allow
> modify
> > > > the
> > > > > parent, and it be hard to forbid misuse to let dynamic parent
> version
> > > by
> > > > > argline
> > > > > possibly I should find another idea to achieve this...
> > > > >
> > > > > Xeno Amess <[email protected]> 于2025年10月11日周六 17:01写道:
> > > > >
> > > > >> according to the codes we only have 3 of these properties.
> > > > >>
> > > > >> private static final String SHA1_PROPERTY = "sha1";
> > > > >>
> > > > >> private static final String CHANGELIST_PROPERTY = "changelist";
> > > > >>
> > > > >> private static final String REVISION_PROPERTY = "revision";
> > > > >>
> > > > >>
> > > > >> should we add a new set of them (likely a prefix like
> ci_friendly_* )
> > > > >>
> > > > >> ----------
> > > > >>
> > > > >> the reason I want it is I have several repos who both inherited
> from a
> > > > pom
> > > > >> of a version, and use a same version number elsewhere.
> > > > >>
> > > > >> for example
> > > > >>
> > > > >> we have
> > > > >>
> > > > >> <parent>
> > > > >> <groupId>org.springframework.boot</groupId>
> > > > >> <artifactId>spring-boot-starter-parent</artifactId>
> > > > >> <version>3.5.6</version>
> > > > >> <relativePath></relativePath>
> > > > >> </parent>
> > > > >>
> > > > >> and same time
> > > > >>
> > > > >> <properties>
> > > > >> <java.version>21</java.version>
> > > > >> <springboot.version>3.5.6</springboot.version>
> > > > >> <revision>0.0.1</revision>
> > > > >>
> <native.maven.plugin.version>0.11.0</native.maven.plugin.version>
> > > > >> <graalpy.version>25.0.0</graalpy.version>
> > > > >> <antlr.version>3.5.3</antlr.version>
> > > > >> <antlr4.version>4.13.2</antlr4.version>
> > > > >> <antlr4-c3.version>1.2.0x</antlr4-c3.version>
> > > > >> <grpc.version>1.76.0</grpc.version>
> > > > >> <protobuf.version>4.32.1</protobuf.version>
> > > > >>
> > > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> > > > >> <gop-root>${maven.multiModuleProjectDirectory}</gop-root>
> > > > >> <maven.compiler.proc>full</maven.compiler.proc>
> > > > >>
> <surefire-report-phase>prepare-package</surefire-report-phase>
> > > > >> <os-maven-plugin.version>1.7.1</os-maven-plugin.version>
> > > > >>
> > > > <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
> > > > >> <replacer.version>1.5.3</replacer.version>
> > > > >> </properties>
> > > > >>
> > > > >> and
> > > > >>
> > > > >> <dependency>
> > > > >> <groupId>org.springframework.boot</groupId>
> > > > >>
> > > >
> <artifactId>spring-boot-starter-oauth2-authorization-server</artifactId>
> > > > >> <version>${springboot.version}</version>
> > > > >> </dependency>
> > > > >>
> > > > >> so seems it be better to let the version in parent use a same
> > > propertie
> > > > >> with the dependency.
> > > > >> so we have to use a ci friendly property
> > > > >> but we already use revision for the project version, and
> > > sha/changelist
> > > > >> seems not quite suitable
> > > > >> so maybe we shall add rule to make every of ci_friendly_*
> property be
> > > > >> ci_friendly property?
> > > > >>
> > > > >>
> > > > >
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [email protected]
> > > > For additional commands, e-mail: [email protected]
> > > >
> > > >
> > >
> >
> >
> > --
> > ------------------------
> > Guillaume Nodet
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>