@@ -437,47 +437,48 @@ void projectWithSpringBootStarterWeb() {
437437 spec -> spec .parser (JavaParser .fromJavaVersion ().dependsOn (javaxServlet )),
438438 mavenProject (
439439 "Sample" ,
440+ //language=xml
440441 pomXml (
441442 """
442- <?xml version="1.0" encoding="UTF-8"?>
443- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
444- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
445- <modelVersion>4.0.0</modelVersion>
446- <parent>
443+ <?xml version="1.0" encoding="UTF-8"?>
444+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
445+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
446+ <modelVersion>4.0.0</modelVersion>
447+ <parent>
448+ <groupId>org.springframework.boot</groupId>
449+ <artifactId>spring-boot-starter-parent</artifactId>
450+ <version>2.7.6</version>
451+ <relativePath/> <!-- lookup parent from repository -->
452+ </parent>
453+ <groupId>com.example</groupId>
454+ <artifactId>demo</artifactId>
455+ <version>0.0.1-SNAPSHOT</version>
456+ <name>demo</name>
457+ <description>Demo project for Spring Boot</description>
458+ <properties>
459+ <java.version>17</java.version>
460+ </properties>
461+ <dependencies>
462+ <dependency>
463+ <groupId>jakarta.servlet</groupId>
464+ <artifactId>jakarta.servlet-api</artifactId>
465+ </dependency>
466+ <dependency>
447467 <groupId>org.springframework.boot</groupId>
448- <artifactId>spring-boot-starter-parent</artifactId>
449- <version>2.7.6</version>
450- <relativePath/> <!-- lookup parent from repository -->
451- </parent>
452- <groupId>com.example</groupId>
453- <artifactId>demo</artifactId>
454- <version>0.0.1-SNAPSHOT</version>
455- <name>demo</name>
456- <description>Demo project for Spring Boot</description>
457- <properties>
458- <java.version>17</java.version>
459- </properties>
460- <dependencies>
461- <dependency>
462- <groupId>jakarta.servlet</groupId>
463- <artifactId>jakarta.servlet-api</artifactId>
464- </dependency>
465- <dependency>
466- <groupId>org.springframework.boot</groupId>
467- <artifactId>spring-boot-starter-web</artifactId>
468- </dependency>
469- </dependencies>
468+ <artifactId>spring-boot-starter-web</artifactId>
469+ </dependency>
470+ </dependencies>
470471
471- <build>
472- <plugins>
473- <plugin>
474- <groupId>org.springframework.boot</groupId>
475- <artifactId>spring-boot-maven-plugin</artifactId>
476- </plugin>
477- </plugins>
478- </build>
472+ <build>
473+ <plugins>
474+ <plugin>
475+ <groupId>org.springframework.boot</groupId>
476+ <artifactId>spring-boot-maven-plugin</artifactId>
477+ </plugin>
478+ </plugins>
479+ </build>
479480
480- </project>
481+ </project>
481482 """
482483 ),
483484 srcMainJava (
@@ -498,4 +499,115 @@ public class TestApplication {
498499 )
499500 );
500501 }
502+
503+ @ Test
504+ void projectWithSpringBoot3StarterWebShouldRemoveJakartaDependency () {
505+ rewriteRun (
506+ spec -> spec .parser (JavaParser .fromJavaVersion ().dependsOn (javaxServlet )),
507+ mavenProject (
508+ "Sample" ,
509+ //language=xml
510+ pomXml (
511+ """
512+ <?xml version="1.0" encoding="UTF-8"?>
513+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
514+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
515+ <modelVersion>4.0.0</modelVersion>
516+ <parent>
517+ <groupId>org.springframework.boot</groupId>
518+ <artifactId>spring-boot-starter-parent</artifactId>
519+ <version>3.2.5</version>
520+ <relativePath/> <!-- lookup parent from repository -->
521+ </parent>
522+ <groupId>com.example</groupId>
523+ <artifactId>demo</artifactId>
524+ <version>0.0.1-SNAPSHOT</version>
525+ <dependencies>
526+ <dependency>
527+ <groupId>jakarta.annotation</groupId>
528+ <artifactId>jakarta.annotation-api</artifactId>
529+ <version>1.3.5</version>
530+ </dependency>
531+ <dependency>
532+ <groupId>org.springframework.boot</groupId>
533+ <artifactId>spring-boot-starter-web</artifactId>
534+ </dependency>
535+ </dependencies>
536+ </project>
537+ """ ,
538+ """
539+ <?xml version="1.0" encoding="UTF-8"?>
540+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
541+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
542+ <modelVersion>4.0.0</modelVersion>
543+ <parent>
544+ <groupId>org.springframework.boot</groupId>
545+ <artifactId>spring-boot-starter-parent</artifactId>
546+ <version>3.2.5</version>
547+ <relativePath/> <!-- lookup parent from repository -->
548+ </parent>
549+ <groupId>com.example</groupId>
550+ <artifactId>demo</artifactId>
551+ <version>0.0.1-SNAPSHOT</version>
552+ <dependencies>
553+ <dependency>
554+ <groupId>org.springframework.boot</groupId>
555+ <artifactId>spring-boot-starter-web</artifactId>
556+ </dependency>
557+ </dependencies>
558+ </project>
559+ """
560+ ),
561+ srcMainJava (
562+ //language=java
563+ java (
564+ """
565+ import jakarta.servlet.A;
566+ public class TestApplication {
567+ }
568+ """
569+ )
570+ )
571+ )
572+ );
573+ }
574+
575+ @ Test
576+ void doNothingIfNotFoundTransitiveDependency () {
577+ rewriteRun (
578+ spec -> spec .parser (JavaParser .fromJavaVersion ().dependsOn (javaxServlet )),
579+ mavenProject (
580+ "Sample" ,
581+ //language=java
582+ srcMainJava (
583+ java (
584+ """
585+ import jakarta.servlet.A;
586+ public class TestApplication {
587+ }
588+ """
589+ )
590+ ),
591+ //language=xml
592+ pomXml (
593+ """
594+ <?xml version="1.0" encoding="UTF-8"?>
595+ <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">
596+ <modelVersion>4.0.0</modelVersion>
597+ <groupId>org.sample</groupId>
598+ <artifactId>sample</artifactId>
599+ <version>1.0.0</version>
600+ <dependencies>
601+ <dependency>
602+ <groupId>jakarta.annotation</groupId>
603+ <artifactId>jakarta.annotation-api</artifactId>
604+ <version>1.3.5</version>
605+ </dependency>
606+ </dependencies>
607+ </project>
608+ """
609+ )
610+ )
611+ );
612+ }
501613}
0 commit comments