package dev.jbang.cli; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import java.io.File; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import dev.jbang.Util; class TestAddDeps { String example = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "\n" + "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n" + " <modelVersion>4.0.0</modelVersion>\n" + "\n" + " <groupId>com.gerbenvis.tools</groupId>\n" + " <artifactId>devops-cli</artifactId>\n" + " <version>1.0-SNAPSHOT</version>\n" + "\n" + " <name>devops-cli</name>\n" + " <url>http://www.gerbenvis.com/java/devops-cli</url>\n" + "\n" + " <properties>\n" + " <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n" + " <maven.compiler.source>11</maven.compiler.source>\n" + " <maven.compiler.target>11</maven.compiler.target>\n" + " </properties>\n" + "\n" + " <dependencies>\n" + "\n" + " <dependency>\n" + " <groupId>org.projectlombok</groupId>\n" + " <artifactId>lombok</artifactId>\n" + " <version>1.18.10</version>\n" + " </dependency>\n" + "\n" + " <dependency>\n" + " <groupId>info.picocli</groupId>\n" + " <artifactId>picocli</artifactId>\n" + " <version>4.1.4</version>\n" + " </dependency>\n" + "\n" + " </dependencies>\n" + "\n" + " <build>\n" + " <plugins>\n" + " <plugin>\n" + " <groupId>org.apache.maven.plugins</groupId>\n" + " <artifactId>maven-jar-plugin</artifactId>\n" + " <version>3.2.0</version>\n" + " <configuration>\n" + " <archive>\n" + " <manifest>\n" + " <addClasspath>true</addClasspath>\n" + " <mainClass>com.gerbenvis.opencli.AkamaiInfoCommand</mainClass>\n" + " <classpathPrefix>dependency-jars/</classpathPrefix>\n" + " </manifest>\n" + " </archive>\n" + " </configuration>\n" + " </plugin>\n" + "\n" + " <plugin>\n" + " <groupId>org.apache.maven.plugins</groupId>\n" + " <artifactId>maven-dependency-plugin</artifactId>\n" + " <version>2.5.1</version>\n" + " <executions>\n" + " <execution>\n" + " <id>copy-dependencies</id>\n" + " <phase>package</phase>\n" + " <goals>\n" + " <goal>copy-dependencies</goal>\n" + " </goals>\n" + " <configuration>\n" + " <outputDirectory>\n" + " ${project.build.directory}/dependency-jars/\n" + " </outputDirectory>\n" + " </configuration>\n" + " </execution>\n" + " </executions>\n" + " </plugin>\n" + " </plugins>\n" + " </build>\n" + "</project>\n"; @Test void testAddDeps(@TempDir File dir) throws IOException { File pom = new File(dir, "pom.xml"); Util.writeString(pom.toPath(), example); List<MavenCoordinate> result = Jbang.findDeps(pom); assertThat(result.stream().map(MavenCoordinate::toCanonicalForm).collect(Collectors.toList()), containsInAnyOrder("org.projectlombok:lombok:jar:1.18.10", "info.picocli:picocli:jar:4.1.4")); } }