@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 >
