12 Aralık 2021 Pazar

war plugin

Giriş
Açıklaması şöyle
The default behavior of the War task is to copy the content of src/main/webapp to the root of the archive. Your webapp directory may of course contain a WEB-INF sub-directory, which may contain a web.xml file. Your compiled classes are compiled to WEB-INF/classes. All the dependencies of the runtime configuration are copied to WEB-INF/lib.
Buradaki en önemli cümle şu. Yani her şeyi war çıktısına kopyalamıyor. Bu konuya aşağıda bakacağız.
 All the dependencies of the runtime configuration are copied to WEB-INF/lib.
Kaynak kodu şeklen şöyle
src
- main - java - webapp - META-INF - resources - css - js - mycustom.js - lib - bootstrap-3.3.1 - .. other js libraries - WEB-INF - jsp main.jsp ... other jsp - gui-servlet.xml - index.jsp - login.jsp - logout.jsp
Yeni Dependency Kelimeleri
Bu plugin ile iki tane daha dependency kelimesi geliyor. Bunlar 
1. providedCompile 
2. providedRuntime

providedCompile
Açıklaması şöyle. providedCompile olanlar derlemeye dahil edilir ancak war'ın içine girmez
"The War plugin adds two dependency configurations: providedCompile and providedRuntime. Those configurations have the same scope as the respective compile and runtime configurations, except that they are not added to the WAR archive."

Örnek - WAR Projesi
Örnek burada. Ben şöyle yaptım
plugins {
  id 'war'
}

configurations {
  moreLibs
}

war {
  // adds a configuration to the WEB-INF/lib dir.
  classpath configurations.moreLibs

}

dependencies {
  providedCompile project(':management:DbAccess')

  providedCompile 'jstl:jstl'
  compile 'org.springframework:spring-webmvc'
  runtime 'org.reactivestreams:reactive-streams'
  runtime 'taglibs:standard'

  moreLibs 'org.apache.commons:commons-text:1.9'
}
Örnek - EAR Projesi
Parent proje şöyle olsun. Burada commons-io derlemek için kullanılıyor ancak runtime değil.
apply from: 'unified.gradle'

dependencies {
  provided 'org.wildfly:wildfly-ejb3:' + wildflyVersion
  provided 'org.wildfly:wildfly-system-jmx:' + wildflyVersion
  provided 'org.wildfly:wildfly-naming:' + wildflyVersion
  compile 'commons-io:commons-io:' + ioVersion


  compile 'log4j:log4j'
  compile 'com.sun.istack:istack-commons-runtime:' + istackVersion
}

jar.enabled = false
Gui alt proje şöyle olsun. war çıktısı için şöyle yaparız. Burada commons-io için özel bir satır yok.
plugins {
id 'war' } dependencies { providedCompile project(':management:dbaccess')//Sadece derlemek için kullan providedCompile 'jstl:jstl'////Sadece derlemek için kullan compile 'org.springframework:spring-webmvc' //Sadece derlemek için kullan runtime 'org.reactivestreams:reactive-streams' //War'a ekle runtime 'taglibs:standard' //War'a ekle }
Parent proje derlenince alt projenin war dosyasında commons-io jar yok ancak gene de proje çalışıyor. Demek ki bu kütüphane bir yerden geliyor. Geldiği yer EAR projesi. EAR projesi şöyle
plugins {
    id 'ear'
}

dependencies {
    // The following dependencies will be the ear modules and
    // will be placed in the ear root
    deploy project(path: ':management:DbAccess')
    ...
    deploy project(path: ':management:Gui', configuration: 'archives')

    ...
    earlib 'commons-io:commons-io'
}

ear {
    libDirName 'lib'
    archiveName = "GuiEar.ear"
    rename '(.*)-' + project.version + '.(.*)', '$1.$2'
    deploymentDescriptor {
        excludes = [ '*sources*' ]
    }
}
providedRuntime
Derlemeye dahil edilmez ancak war'ın içine girer


Hiç yorum yok:

Yorum Gönder

Gradle Daemon Nedir?

Giriş Açıklaması  şöyle . Gradle Daemon arka planda çalışır. Çünkü Gradle'ı ayağa kaldırmak ve ilklendirmek çok uzun sürüyor.  Gradle ru...