Skip to content

Illegal character in path at index 76: ~/.m2/repository/org/apache/logging/log4j/log4j-bom/${log4j2.version}/log4j-bom-${log4j2.version}.pom #5673

@xLitil

Description

@xLitil

What version of OpenRewrite are you using?

I am using

  • rewrite-recipe-bom: 3.9.0
  • rewrite-maven: 8.55.0 (bom overrided)

What is the smallest, simplest way to reproduce the problem?

Recipe:

type: specs.openrewrite.org/v1beta/recipe
name: com.socgen.digital.xbl.recipes.RemoveLog4JBom
description: >-
  Remove log4j-bom dependency because it's already defined un SB's BOM.
recipeList:
  - org.openrewrite.maven.RemoveManagedDependency:
      groupId: org.apache.logging.log4j
      artifactId: log4j-bom
  - org.openrewrite.maven.RemoveDependency:
      groupId: org.apache.logging.log4j
      artifactId: log4j-bom
  - org.openrewrite.maven.RemoveProperty:
      propertyName: log4j2.version

Unit test (multi module project):

class RemoveLog4JBomTest implements RewriteTest {

    @Override
    public void defaults(RecipeSpec spec) {
        Recipe recipe = Environment.builder()
                .scanYamlResources()
                .build()
                .activateRecipes("com.socgen.digital.xbl.recipes.RemoveLog4JBom");
        spec.recipe(recipe);
    }

    @Test
    void removeLog4JBom() {
        rewriteRun(
                mavenProject("",
                        srcMainResources(
                                pomXml(
                                        """
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <groupId>dummyGroupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    
    <properties>
        <log4j2.version>2.17.1</log4j2.version>
    </properties>

    <modules>
        <module>child-module</module>
    </modules>
  
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                 <artifactId>log4j-bom</artifactId>
                <version>${log4j2.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
                                        """,
                                        """
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <groupId>dummyGroupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
  
    <modules>
        <module>child-module</module>
    </modules>
</project>
                                        """,
                                        s -> s.path("pom.xml")
                                ),
                                pomXml(
                                        """
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
      <groupId>dummyGroupId</groupId>
      <artifactId>parentArtifactId</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>child-artifact</artifactId>
    <packaging>jar</packaging>
    <name>child-module</name>

</project>
                                        """,
                                        """
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
      <groupId>dummyGroupId</groupId>
      <artifactId>parentArtifactId</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>child-artifact</artifactId>
    <packaging>jar</packaging>
    <name>child-module</name>

</project>
                                        """,
                                        s -> s.path("child-module/pom.xml")
                                )
                        )
                )
                //language=properties
        );
    }
}

What did you expect to see?

Unit test successfull

What did you see instead?

An exception:

java.lang.AssertionError: Failed to run recipe at Cursor{Document->root}
	at org.openrewrite.test.RewriteTest.lambda$defaultExecutionContext$14(RewriteTest.java:640)
	at org.openrewrite.scheduling.RecipeRunCycle.handleError(RecipeRunCycle.java:291)
	at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$8(RecipeRunCycle.java:230)
	at org.openrewrite.scheduling.RecipeStack.reduce(RecipeStack.java:60)
	at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$9(RecipeRunCycle.java:179)
	at org.openrewrite.internal.InMemoryLargeSourceSet.lambda$edit$0(InMemoryLargeSourceSet.java:83)
	at org.openrewrite.internal.ListUtils.map(ListUtils.java:244)
	at org.openrewrite.internal.ListUtils.map(ListUtils.java:267)
	at org.openrewrite.internal.InMemoryLargeSourceSet.edit(InMemoryLargeSourceSet.java:82)
	at org.openrewrite.scheduling.RecipeRunCycle.editSources(RecipeRunCycle.java:177)
	at org.openrewrite.RecipeScheduler.runRecipeCycles(RecipeScheduler.java:84)
	at org.openrewrite.RecipeScheduler.scheduleRun(RecipeScheduler.java:41)
	at org.openrewrite.Recipe.run(Recipe.java:441)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:377)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:130)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:125)
	at com.socgen.digital.xbl.recipes.RemoveLog4JBomTest.removeLog4JBom(RemoveLog4JBomTest.java:26)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.openrewrite.internal.RecipeRunException: java.lang.IllegalArgumentException: Illegal character in path at index 76: file:///C:/Users/.m2/repository/org/apache/logging/log4j/log4j-bom/${log4j2.version}/log4j-bom-${log4j2.version}.pom
	at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:281)
	at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:268)
	at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
	at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$7(RecipeRunCycle.java:210)
	at io.micrometer.core.instrument.AbstractTimer.recordCallable(AbstractTimer.java:178)
	at org.openrewrite.table.RecipeRunStats.recordEdit(RecipeRunStats.java:74)
	at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$8(RecipeRunCycle.java:206)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 76: file:///C:/Users/.m2/repository/org/apache/logging/log4j/log4j-bom/${log4j2.version}/log4j-bom-${log4j2.version}.pom
	at java.base/java.net.URI.create(URI.java:906)
	at org.openrewrite.maven.internal.MavenPomDownloader.download(MavenPomDownloader.java:562)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.mergeDependencyManagement(ResolvedPom.java:900)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentDependenciesRecursively(ResolvedPom.java:480)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentDependenciesRecursively(ResolvedPom.java:498)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentDependenciesRecursively(ResolvedPom.java:462)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentsRecursively(ResolvedPom.java:414)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolve(ResolvedPom.java:385)
	at org.openrewrite.maven.tree.ResolvedPom.resolve(ResolvedPom.java:193)
	at org.openrewrite.maven.UpdateMavenModel.updateResult(UpdateMavenModel.java:167)
	at org.openrewrite.maven.UpdateMavenModel.lambda$updateResult$8(UpdateMavenModel.java:172)
	at org.openrewrite.internal.ListUtils.map(ListUtils.java:244)
	at org.openrewrite.internal.ListUtils.map(ListUtils.java:267)
	at org.openrewrite.maven.UpdateMavenModel.updateResult(UpdateMavenModel.java:170)
	at org.openrewrite.maven.UpdateMavenModel.visitDocument(UpdateMavenModel.java:136)
	at org.openrewrite.xml.tree.Xml$Document.acceptXml(Xml.java:149)
	at org.openrewrite.xml.tree.Xml.accept(Xml.java:53)
	at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
	... 23 more
Caused by: java.net.URISyntaxException: Illegal character in path at index 76: file:///C:/Users/.m2/repository/org/apache/logging/log4j/log4j-bom/${log4j2.version}/log4j-bom-${log4j2.version}.pom
	at java.base/java.net.URI$Parser.fail(URI.java:2976)
	at java.base/java.net.URI$Parser.checkChars(URI.java:3147)
	at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3229)
	at java.base/java.net.URI$Parser.parse(URI.java:3177)
	at java.base/java.net.URI.<init>(URI.java:623)
	at java.base/java.net.URI.create(URI.java:904)
	... 40 more

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingmaven

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions