2 Ocak 2023 Pazartesi

Custom Archetype Yaratma

Giriş
Bir örnek burada

Örnek
pom.xml şöyledir. Burada önemli olan şey artifactId ile belirtilen isim
<?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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>fr.simplex-software.archetypes</groupId>
  <artifactId>jakartaee10-basic-archetype</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Basic Java EE 10 project archetype</name>
  ...
  <packaging>maven-archetype</packaging>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>3.1.1</version>
      </extension>
    </extensions>
  </build>
</project>
Böylece şöyle kullanırız
mvn -B archetype:generate \
  -DarchetypeGroupId=fr.simplex-software.archetypes \
  -DarchetypeArtifactId=jakartaee10-basic-archetype \
  -DarchetypeVersion=1.0-SNAPSHOT \
  -DgroupId=com.exemple \
  -DartifactId=test
Kod üretiminde kullanılacak her şey şu dosyada tanımlı. Bu dosyada tanımlı her şeyin önüne src/main/resources/archetype-resources/ eklenir.
src/main/resources/META-INF/maven/archetype-metadata.xml
XML şöyle ise 
<archetype-descriptor...>
  <fileSets>
    <fileSet filtered="true" packaged="false" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.java</include>
      </includes>
    </fileSet>
    ...
  </fileSets>
</archetype-descriptor>
Java kodları şu dizinde
src/main/resources/archetype-resources/src/main/java
Örneğin test kodları şurada
src/main/resources/archetype-resources/src/test/java/
Diğer dosyalar şurada
src/main/resources/archetype-resources/src/main/resources/META-INF
src/main/resources/archetype-resources/src/main/webapp/WEB-INF/
Kodlarda Velocity placeholder kullanılıyor. Şöyle yaparız. Burada  $package bir placeholder
package $package;

import jakarta.ws.rs.*;
import jakarta.ws.rs.core.*;
import jakarta.inject.*;

import org.eclipse.microprofile.config.inject.*;

@Path("myresource")
public class MyResource {
  @Inject
  @ConfigProperty(name = "message")
  private String message;

  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String getIt() {
    return message;
  }
}



Hiç yorum yok:

Yorum Gönder

Local Snapshot Kullanmak

Örnek Şöyle yaparız <repository> <id>snapshot-repository</id> <name>Maven2 Snapshot Repository</name> &l...