[
https://issues.apache.org/jira/browse/MENFORCER-473?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17701112#comment-17701112
]
Nils Christian Ehmke commented on MENFORCER-473:
------------------------------------------------
Hi [~sjaranowski] ,
> Can you more clarify your requirements, cases in this subject?
Sure. We have rules evaluating expressions to get e.g. the resources folder of
the Maven project:
{code:java}
protected Set<Path> getResourceFolders( final EnforcerRuleHelper helper )
throws EnforcerRuleException {
...
final List<Resource> resources = ( List<Resource> ) helper.evaluate(
"${project.build.resources}" );
{code}
However, moving from Enforcer Plugin 3.0.0 to 3.2.1 a lot of the classes (e.g.
the _EnforcerRuleHelper_) become deprecated, and classes for the evaluation are
missing ("The type
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator
cannot be resolved. It is indirectly referenced from required .class files").
The new way seems to simply inject _MavenProject_ to retrieve such properties,
but this is not possible with Java 17. So how do we solve this?
> Custom Rules are not processed with Java 17
> -------------------------------------------
>
> Key: MENFORCER-473
> URL: https://issues.apache.org/jira/browse/MENFORCER-473
> Project: Maven Enforcer Plugin
> Issue Type: Bug
> Components: externalRules, Plugin, Rule API
> Affects Versions: 3.2.1
> Environment: Windows, Java 17
> Reporter: Nils Christian Ehmke
> Priority: Major
>
> Hi,
> We noticed that our custom rule, using the newer API (as documented
> [here)|https://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html]
> is not processed using Java 17.
> We created a sample project using the custom rule example. Once we use Java
> 17 in the pom.xml it breaks.
> {code:java}
> <properties>
> <api.version>3.2.1</api.version>
> <maven.version>3.9.0</maven.version>
> <!-- use JDK 1.8 at least -->
> <maven.compiler.source>17</maven.compiler.source>
> <maven.compiler.target>17</maven.compiler.target>
> </properties>
> ...
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-compiler-plugin</artifactId>
> <version>3.11.0</version>
> </plugin>
> <plugin>
> <!-- generate index of project components -->
> <groupId>org.eclipse.sisu</groupId>
> <artifactId>sisu-maven-plugin</artifactId>
> <version>0.9.0.M1</version>
> <executions>
> <execution>
> <goals>
> <goal>main-index</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> {code}
> If we compile the custom rule and verify the using project, we get
> {code}
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-enforcer-plugin:3.2.1:enforce (enforce) on
> project maven-enforcer-plugin-sample-usage: Execution enforce of goal
> org.apache.maven.plugins:maven-enforcer-plugin:3.2.1:enforce failed: Failed
> to create enforcer rules with name: myCustomRule or for class:
> org.apache.maven.plugins.enforcer.MyCustomRule -> [Help 1]
> {code}
> The index file itself looks good, so something else within the plugin or Sisu
> Plexus seems to break.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)