I have some problem when creating a maven project from a maven custom archetype. I have the expected directory structure for a maven-archetype, including a post-generation groovy script, which I want to create some Kafka topics in a broker immediately after the project generation.
The structure of the archetype project is:
/src/main/resources/archetype-resources/ DIRECTORY_STRUCTURE_FOR_MY_PROJECT
/META-INF----------------/maven/-archetype-metatada.xml
/archetype-post-generate.groovy
target/
pom.xml
My pom.xml has the structure below:
<project>
...
<packaging>maven-archetype</packaging>
...
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>3.2.1</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.2.1</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
</project>
If I run mvn clean install, it works properly. The archetype is created and stored in my local catalog.
However, if I try to create a new project from that archetype (using mvn archetype:generate and introducing all stuff.. artifactId, archetypeArtifactId....), I come across this:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.2.1:generate (default-cli) on project standalone-pom: startup failed:
[ERROR] Script1.groovy: 9: unable to resolve class org.apache.kafka.common.errors.TopicExistsException
[ERROR] @ line 9, column 1.
The dependencies can´t be resolved. Should I add the dependencies in another way for this purpose? Is it different for a post-generation groovy script? Is it impossible to add dependencies to a post-generation script? If I run the script from my IntelliJ IDE with "Run" , it works perfectly adding dependencies in pom.xml. I´ve tried also putting the dependencies inside tag of maven-archetype-plugin. It doesn´t work.
I would appreciate every answer.
Thanks a lot!
Just added @Grab("groupId:artifactId:version") for each dependency and the import below each @Grab notation and it worked.