vy commented on PR #1192:
URL: https://github.com/apache/logging-log4j2/pull/1192#issuecomment-1373571950

   @ppkarwasz, it should be possible, but I guess, it is not. :confounded: I 
have already wasted hours on this, hence I will not go into trouble of 
explaining it, though I will share my attempts:
   
   ## Using `build-helper-maven-plugin` to set `slf4jExtVersion` property
   
   ```xml
   <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>build-helper-maven-plugin</artifactId>
     <version>3.3.0</version>
     <executions>
       <execution>
         <id>replace-slf4j-version-property</id>
         <phase>prepare-package</phase>
         <goals>
           <goal>bsh-property</goal>
         </goals>
         <configuration>
           <properties>
             <property>slf4jExtVersion</property>
           </properties>
           <source>
             slf4jExtVersion = "1.7.36";
           </source>
         </configuration>
       </execution>
     </executions>
   </plugin>
   <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>flatten-maven-plugin</artifactId>
     <version>1.3.0</version>
     <inherited>false</inherited>
     <executions>
       <execution>
         <id>flatten-bom</id>
         <phase>prepare-package</phase>
         <goals>
           <goal>flatten</goal>
         </goals>
         <configuration>
           <flattenMode>clean</flattenMode>
           <!-- POM `ElementHandling` is pretty cryptic: 
https://www.mojohaus.org/flatten-maven-plugin/apidocs/org/codehaus/mojo/flatten/ElementHandling.html
                Trial-and-error has shown that we should use either `remove` or 
`interpolate`.
                `remove` simply removes the element.
                `interpolate` takes the element from the original POM with 
variables interpolated.
                Avoid using `resolve`, which uses the effective POM where 
inherited changes from the parent are also incorporated. -->
           <pomElements>
             <build>remove</build>
             <properties>remove</properties>
             <repositories>remove</repositories>
             <distributionManagement>remove</distributionManagement>
             <dependencyManagement>interpolate</dependencyManagement>
           </pomElements>
           <!-- Setting `outputDirectory` to `project.build.directory`, which 
is cleaned by `default-clean` execution of `clean:clean`.
                This makes `flatten:clean` redundant. -->
           <outputDirectory>${project.build.directory}</outputDirectory>
         </configuration>
       </execution>
     </executions>
   </plugin>
   ```
   
   This doesn't work. `flatten-maven-plugin` doesn't use the version set by the 
`build-helper-maven-plugin`. I suppose it simply reads the `pom.xml` ignoring 
the current Maven context.
   
   ## Using `versions-maven-plugin` to set `slf4jExtVersion` property
   
   ```xml
   <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>versions-maven-plugin</artifactId>
     <version>2.14.2</version>
     <executions>
       <execution>
         <id>replace-slf4j-version-property</id>
         <phase>prepare-package</phase>
         <goals>
           <goal>set-property</goal>
         </goals>
         <configuration>
           <property>slf4jExtVersion</property>
           <newVersion>1.7.36</newVersion>
         </configuration>
       </execution>
       <execution>
         <id>revert-slf4j-version-property</id>
         <phase>package</phase>
         <goals>
           <goal>set-property</goal>
         </goals>
         <configuration>
           <property>slf4jExtVersion</property>
           <newVersion>1.7.25</newVersion>
         </configuration>
       </execution>
     </executions>
   </plugin>
   <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>flatten-maven-plugin</artifactId>
     <!-- same as previous usage -->
   </plugin>
   ```
   
   **This works!** But... `replace-slf4j-version-property` updates the original 
`pom.xml`, though `revert-slf4j-version-property` doesn't revert it back. Hence 
when `./mvnw package` finishes, it leaves the repository in an unclean state: 
`pom.xml` contains `<slf4jExtVersion>1.7.36</slf4jExtVersion>` change, whereas 
it should have been left `<slf4jExtVersion>1.7.25</slf4jExtVersion>`.
   
   ## Conclusion
   
   `versions-maven-plugin` method can be used. But ideally 
`flatten-maven-plugin` should be updated to accept a list of properties to take 
into account while interpolating property substitutions. All of this is very 
ugly, including the original problem itself.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to