22 Ağustos 2023 Salı

Conflicting Transitive Dependency

Giriş
İstenilen transitive dependency sürümünü tanımlamak için kullanılabilir. Açıklaması şöyle
The point of dependencyManagement is to allow me to specify a version for transitive dependencies. 
Örnek
Şöyle yaparız
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>conflicting.group</groupId>
      <artifactId>TransitiveDependency</artifactId>
      <version>desired.version</version>
    </dependency>
  </dependencies>
</dependencyManagement>
Örnek - BOM
Şöyle yaparız. Burada Log4J2 için BOM kullanılıyor. Böylece tüm projedeki log4j sürümü değiştirilebiliyor.
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-bom</artifactId>
      <version>${log4j2.version}</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
  </dependencies>
</dependencyManagement>

Örnek
Bir projede snakeyaml kütüphanesinin eski bir sürümü  transitive dependency olarak gelsin ama biz daha yeni bir sürüm kullanmak isteyelim. Şöyle yaparız
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <version>1.32</version>
    </dependency>
  </dependencies>
</dependencyManagement>

13 Ağustos 2023 Pazar

Apache Ant

Giriş
Açıklaması şöyle
Ant is based on three main abstractions:

- A task is an atomic unit of work, e.g., javac to compile Java files, war to assemble a Web Archive, etc. Ant provides lots of tasks out-of-the-box but allows adding custom ones.
- A target is a list of tasks
- You can define dependencies between tasks, such as package depending on compile. In this regard, you can see Ant as a workflow execution engine.

Local Snapshot Kullanmak

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