Projenin tüm artifact (çıktılarını) dijital olarak imzalar
31 Temmuz 2023 Pazartesi
25 Temmuz 2023 Salı
mvn komutu -pl seçeneği - Project List
Giriş
Belirtilen modülün kullandığı diğer modülleri de derlemek istersek şöyle yaparız.
Multi-module projelerde kullanılır. "project list" anlamına gelir. Tüm projeleri değil sadece ismi belirtilen projeyi derler. Açıklaması şöyle.
-pl,--projects <arg> >> Comma-delimited list of specified reactor projects to build
instead of all projects. A project can be specified by [groupId]:artifactId or by its
relative path.
Örnek
Şöyle yaparız.mvn package -pl sub_module
Örnek
Şöyle yaparız. Burada module ismi gateway ve spring-boot plugin'i tetikleniyor.
mvn -pl gateway spring-boot:run
-DskipTests
-Dspring-boot.run.arguments= — EUREKA_SERVER_ADDRESS=http://localhost:8761/eureka
Örnek - exlude
Şöyle yaparız. Burada - veya ! karakteri ile bazı modüllerin hariç bırakılması sağlanıyor
mvn install -DskipTests -pl -distribution,-extensions/hadoop-dist -f pom.xml
-amd ile Birlikte Kullanımı - also-make-dependents
Açıklaması şöyle
The -amd option stands for "also-make-dependents" and is used along with -pl to ensure that not only the specified modules are built but also the projects that depend on them.
Örnek
Bu modüle bağımlı olan diğerlerini de derlemek için şöyle yaparız.
mvn clean package -pl sub_module -amd
-am ile Birlikte Kullanımı - also-make
Açıklaması şöyle
The -am option stands for "also-make" and is used along with -pl to ensure that not only the specified modules are built but also their dependencies.
Örnek
mvn clean package -pl sub_module -am
18 Temmuz 2023 Salı
dockerfile plugin
Giriş
Açıklaması şöyle
Spotify Dev team open-sourced many tools they are using among others dockerfile-maven-plugin as well.The dockerfile-maven-plugin can create and publish a docker image based on your Dockerfile meanwhile running maven commands.
Örnek
Şöyle yaparız
<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>${dockerfile-maven-plugin.version}</version><configuration><repository>${docker.image.prefix}/${project.artifactId}</repository></configuration><executions><execution><id>default</id><phase>install</phase><goals><goal>build</goal></goals></execution></executions></plugin>
Docker dosyası için şöyle yaparız. maven install komutu ile önce jar yapılandırılıyor. En son olarak ta Docker dosyası çalıştırılıyor
FROM openjdk:17-alpine as builder WORKDIR application ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} application.jar RUN java -Djarmode=layertools -jar application.jar extract FROM openjdk:17-alpine WORKDIR application COPY --from=builder application/dependencies/ ./ COPY --from=builder application/spring-boot-loader/ ./ COPY --from=builder application/snapshot-dependencies/ ./ COPY --from=builder application/application/ ./ ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
mvn deploy ile de Docker image Docker deposuna gönderilir
17 Temmuz 2023 Pazartesi
shade plugin - relocation Kullanımı
Giriş
Bazen bir kütüphane ile gelen 3. taraf bağımlılıklar ile kendi projem arasında uyumsuzluk olur.
1. relocation Alanı
relocation ve shadedPattern genelde birlikte kullanılır
Örnek
Şöyle yaparız. Burada org.apache.calcite kodları başka bir dizinine toplanır
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <relocations> <relocation> <pattern>org.apache.calcite</pattern> <shadedPattern>${relocation.root}.org.apache.calcite</shadedPattern> </relocation> </relocations> </configuration> </plugin>
Örnek
Şöyle yaparız.
- Burada joda-time ve com.amazonaws kütüphanelerini dahil eden bir fat jar üretiliyor.
- Ayrıca org.joda paketleri com.amazonaws.thirdparty.joda altına taşınıyor.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <configuration> <artifactSet> <includes> <include>joda-time:joda-time</include> <include>com.amazonaws:*</include> </includes> </artifactSet> <relocations> <relocation> <pattern>org.joda</pattern> <shadedPattern>com.amazonaws.thirdparty.joda</shadedPattern> </relocation> </relocations> </configuration> </plugin>
Örnek
Şöyle yaparız
<plugin> <artifactId>maven-shade-plugin</artifactId> <configuration> <!-- Cancel the relocation of jackson-core defined in parent pom. <relocations combine.self="override"> </relocations> </configuration> </plugin>
veya şöyle yaparız
<plugin> <artifactId>maven-shade-plugin</artifactId> <configuration> <!-- Cancel the relocation of jackson-core defined in hazelcast-parent pom. <relocations combine.self="override"> <relocation> <pattern>com.fasterxml.jackson.core</pattern> <shadedPattern>com.fasterxml.jackson.core</shadedPattern> </relocation> </relocations> </configuration> </plugin>
2. Sadece shadedPattern Alanı
Açıklaması şöyle. Kendi kodlarım ve dependency olarak gelen kütüphaneler shade isimli bir dizine toplanır. İstenirse bu dizine yeni bir isim verilebilir
The "shadedPattern" is a configuration option in the Maven Shade Plugin that specifies the pattern for renaming the classes and resources in the shaded JAR file.When you use the Maven Shade Plugin to create a shaded JAR, it merges all the dependencies of your project into a single JAR file. During the shading process, the plugin renames the classes and resources from the original JAR files to avoid conflicts with other libraries in the classpath.The shadedPattern option allows you to specify the pattern for the renamed classes and resources in the shaded JAR. By default, the pattern is "shade/[class]", which means that all classes and resources will be moved to a "shade" directory in the JAR file.You can customize the shadedPattern option to change the directory structure or add prefixes or suffixes to the renamed classes and resources. For example, you could use the pattern "myapp/[artifactId]-[version]/[class]" to create a directory structure that includes the name and version of your project.
Örnek
Şöyle yaparız. Burada kendi kodlarım da dahil olmak üzere her şey myapp/my-app-1.0.0/ dizinine toplanır
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <configuration> <shadedPattern>myapp/[artifactId]-[version]/[class]</shadedPattern> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin>
Kaydol:
Kayıtlar (Atom)
Local Snapshot Kullanmak
Örnek Şöyle yaparız <repository> <id>snapshot-repository</id> <name>Maven2 Snapshot Repository</name> &l...
-
Giriş Not : Bu plugin'i fat jar üretmek için kullanmamak lazım. shade plugin bu iş için daha iyi Açıklaması şöyle The Assembly Plugin...
-
Örnek Şöyle yaparız <plugin> <groupId>com.rudikershaw.gitbuildhook</groupId> <artifactId>git-build-hook-maven-pl...
-
Giriş Eğer pom.xml içinde şöyle yazıyorsa bu pom'un çıktısı deploy edilmez <properties> <maven.deploy.skip> false </mav...