still can't... see https://github.com/XenoAmess/gop-platform-maven-structure-demo/commit/2c67be9e7c8dd29c85ec710f68298a3b483d825f
Guillaume Nodet <[email protected]> 于2025年10月16日周四 21:56写道: > I think the reason for the failure is that the changelist property needs to > be defined in the root pom. > > Le jeu. 16 oct. 2025 à 15:40, Xeno Amess <[email protected]> a écrit : > > > @Guillaume Nodet > > https://github.com/XenoAmess/gop-platform-maven-structure-demo.git > > > > Guillaume Nodet <[email protected]> 于2025年10月16日周四 13:45写道: > > > > > That's the case anymore with Maven 4. > > > The consumer POM is installed to your local repository and does not > > contain > > > CI-friendly versions anymore. > > > > > > Can you set up a small project to reproduce the problem ? I don't > really > > > understand... > > > > > > Le jeu. 16 oct. 2025 à 05:05, Xeno Amess <[email protected]> a > écrit : > > > > > > > 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] > > > > > > > > > > > > > > > > > > > > > > > -- > > > ------------------------ > > > Guillaume Nodet > > > > > > > > -- > ------------------------ > Guillaume Nodet >
