spring-boot-migrator icon indicating copy to clipboard operation
spring-boot-migrator copied to clipboard

Project version defined as ${revision} cannot be resolved via maven.config

Open ashakirin opened this issue 3 years ago • 0 comments

Since maven 3.5.0 it is possible to use ${revision} variable as project version. One way to resolve this ${revision} is specify it in maven.config file: maven.config: -Drevision=2.28.0-SNAPSHOT

This way is not supported by SBM and following exception is thrown by run recipe:

Applying recipe 'boot-2.7-3.0-dependency-version-update'
     Add Spring Boot milestone repository.15:40:50.136 [main] ERROR o.s.s.o.RewriteExecutionContext - Exception occured!
java.lang.IllegalArgumentException: Illegal character in path at index 69: file:/Users/ashakirin/.m2/repository/app/coronawarn/server/services/${revision}/services-${revision}.pom
	at java.base/java.net.URI.create(URI.java:906)
	at org.openrewrite.maven.internal.MavenPomDownloader.download(MavenPomDownloader.java:242)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentPropertiesAndRepositoriesRecursively(ResolvedPom.java:351)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentsRecursively(ResolvedPom.java:308)
	at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolve(ResolvedPom.java:297)
	at org.openrewrite.maven.tree.ResolvedPom.resolve(ResolvedPom.java:142)
	at org.openrewrite.maven.tree.Pom.resolve(Pom.java:92)
	at org.openrewrite.maven.MavenParser.parseInputs(MavenParser.java:113)
	at org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile$RefreshPomModel.visit(OpenRewriteMavenBuildFile.java:102)
	at org.openrewrite.RecipeScheduler.scheduleVisit(RecipeScheduler.java:283)
	at org.openrewrite.RecipeScheduler.scheduleVisit(RecipeScheduler.java:345)
	at org.openrewrite.RecipeScheduler.scheduleRun(RecipeScheduler.java:88)
	at org.openrewrite.Recipe.run(Recipe.java:286)
	at org.openrewrite.Recipe.run(Recipe.java:278)
	at org.openrewrite.Recipe.run(Recipe.java:274)
	at org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile.apply(OpenRewriteMavenBuildFile.java:148)
	at org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile.addRepository(OpenRewriteMavenBuildFile.java:742)
	at org.springframework.sbm.build.migration.actions.AddRepositoryAction.addRepository(AddRepositoryAction.java:30)
	at org.springframework.sbm.build.migration.actions.AddGenericRepositoryAction.apply(AddGenericRepositoryAction.java:74)
	at org.springframework.sbm.engine.recipe.AbstractAction.applyInternal(AbstractAction.java:58)
	at org.springframework.sbm.engine.recipe.Action.applyWithStatusEvent(Action.java:37)
	at org.springframework.sbm.engine.recipe.Recipe.apply(Recipe.java:101)
	at org.springframework.sbm.engine.commands.ApplyCommand.execute(ApplyCommand.java:61)
	at org.springframework.sbm.shell.ApplyShellCommand.apply(ApplyShellCommand.java:61)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.shell.command.invocation.InvocableShellMethod.doInvoke(InvocableShellMethod.java:306)
	at org.springframework.shell.command.invocation.InvocableShellMethod.invoke(InvocableShellMethod.java:232)
	at org.springframework.shell.command.CommandExecution$DefaultCommandExecution.evaluate(CommandExecution.java:158)
	at org.springframework.shell.Shell.evaluate(Shell.java:208)
	at org.springframework.shell.Shell.run(Shell.java:140)
	at org.springframework.shell.jline.InteractiveShellRunner.run(InteractiveShellRunner.java:73)
	at org.springframework.shell.DefaultShellApplicationRunner.run(DefaultShellApplicationRunner.java:65)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:762)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
	at org.springframework.sbm.SpringShellApplication.main(SpringShellApplication.java:27)
Caused by: java.net.URISyntaxException: Illegal character in path at index 69: file:/Users/ashakirin/.m2/repository/app/coronawarn/server/services/${revision}/services-${revision}.pom
	at java.base/java.net.URI$Parser.fail(URI.java:2974)
	at java.base/java.net.URI$Parser.checkChars(URI.java:3145)
	at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3227)
	at java.base/java.net.URI$Parser.parse(URI.java:3175)
	at java.base/java.net.URI.<init>(URI.java:623)
	at java.base/java.net.URI.create(URI.java:904)```

Test project is https://github.com/corona-warn-app/cwa-server 

ashakirin avatar Sep 19 '22 13:09 ashakirin