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