플러그인은 주어진 Gradle 빌드의 내장 된 Tomcat 웹 컨테이너에 대한 웹 응용 프로그램의 배포 기능을 제공합니다. 전쟁 플러그인을 확장합니다. 현재 Tomcat 버전 6.0.x, 7.0.x, 8.0.x, 8.5.x 및 9.0.x가 지원됩니다.
이 플러그인의 일반적인 사용 사례는 개발 중 배포를 지원하는 것입니다. 플러그인을 사용하면 컨테이너의 빠른 시작 시간으로 인해 빠른 웹 응용 프로그램 개발이 가능합니다. Gradle은 동일한 JVM에서 내장 컨테이너를 시작합니다. 현재 컨테이너는 별도의 프로세스로 포장 할 수 없습니다. 이 플러그인은 또한 원격 컨테이너에 전쟁 파일을 배포 할 수 없습니다. 이 기능을 찾고 있다면 대신화물 플러그인을 살펴보십시오.
플러그인의 기능을 사용하려면 바이너리 아티팩트를 빌드 스크립트 클래스 경로에 추가하고 플러그인을 적용해야합니다.
플러그인 용기는 빌드 스크립트의 클래스 경로에 정의되어야합니다. Gradle 플러그인 포털에서 직접 사용할 수 있습니다. 다음 코드 스 니펫은 검색 방법에 대한 예를 보여줍니다.
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath ' com.bmuschko:gradle-tomcat-plugin:2.7.0 '
}
}JAR 파일에는 두 개의 플러그인이 있습니다.
| 플러그인 식별자 | 의존합니다 | 유형 | 설명 |
|---|---|---|---|
| com.bmuschko.tomcat-base | - | Tomcatbaseplugin | Tomcat 사용자 정의 작업 유형, 사전 구성 클래스 경로를 제공합니다. |
| com.bmuschko.tomcat | com.bmuschko.tomcat-base | Tomcatplugin | 임베디드 Tomcat 컨테이너를 시작하고 중지하는 작업을 제공하고 tomcat 이라는 확장을 노출시킵니다. |
com.bmuschko.tomcat 플러그인을 사용하면 신속하게 시작하는 데 도움이됩니다. 사전 구성된 작업이 있으면 괜찮다면 이것이 바람직한 옵션입니다. 대부분의 플러그인 사용자는이 옵션을 사용합니다. Tomcat 플러그인을 사용하려면 빌드 스크립트에 다음 코드 스 니펫을 포함시킵니다.
apply plugin: 'com.bmuschko.tomcat'
작업을 완전히 제어해야하거나 미리 구성된 작업을 수행하고 싶지 않은 경우 com.bmuschko.tomcat-base 플러그인을 사용해야합니다. 기능 테스트를 위해 컨테이너를 설정하려는 경우에 해당 될 수 있습니다. 단점은 각 작업이 빌드 스크립트에서 개별적으로 구성되어야한다는 것입니다. Tomcat 기본 플러그인을 사용하려면 빌드 스크립트에 다음 코드 스 니펫을 포함시킵니다.
apply plugin: 'com.bmuschko.tomcat-base'
또한 Tomcat 런타임 라이브러리를 구성 tomcat 에 추가해야합니다. 현재 Tomcat 버전 6.0.x, 7.0.x, 8.0.x, 8.5.x 및 9.0.x는 플러그인에서 지원됩니다. 다른 버전의 Tomcat 라이브러리를 혼합하지 않도록하십시오.
Tomcat 6.0.x :
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = ' 6.0.51 '
tomcat " org.apache.tomcat:catalina: ${ tomcatVersion } " ,
" org.apache.tomcat:coyote: ${ tomcatVersion } " ,
" org.apache.tomcat:jasper: ${ tomcatVersion } "
}Tomcat 7.0.x :
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = ' 7.0.76 '
tomcat " org.apache.tomcat.embed:tomcat-embed-core: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-logging-juli: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-jasper: ${ tomcatVersion } "
}Tomcat 8.0.x :
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = ' 8.0.42 '
tomcat " org.apache.tomcat.embed:tomcat-embed-core: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-logging-juli: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-jasper: ${ tomcatVersion } "
}Tomcat 8.5.x :
의존성 tomcat-embed-logging-juli Log4J 1.X (더 이상 LOG4J 커뮤니티에서 지원하지 않음)를 통해 컨테이너 로깅을 활성화하기 위해만 있으면됩니다. Log4J 2.X는 추가 라이브러리를 선언하지 않고 컨테이너 로깅에 사용할 수 있습니다.
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = ' 8.5.16 '
tomcat " org.apache.tomcat.embed:tomcat-embed-core: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-logging-juli:8.5.2 " ,
" org.apache.tomcat.embed:tomcat-embed-jasper: ${ tomcatVersion } "
}
tomcat {
httpProtocol = ' org.apache.coyote.http11.Http11Nio2Protocol '
ajpProtocol = ' org.apache.coyote.ajp.AjpNio2Protocol '
}Tomcat 9.0.x :
의존성 tomcat-embed-logging-juli Log4J 1.X (더 이상 LOG4J 커뮤니티에서 지원하지 않음)를 통해 컨테이너 로깅을 활성화하기 위해만 있으면됩니다. Log4J 2.X는 추가 라이브러리를 선언하지 않고 컨테이너 로깅에 사용할 수 있습니다.
repositories {
mavenCentral()
}
dependencies {
def tomcatVersion = ' 9.0.1 '
tomcat " org.apache.tomcat.embed:tomcat-embed-core: ${ tomcatVersion } " ,
" org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6 " ,
" org.apache.tomcat.embed:tomcat-embed-jasper: ${ tomcatVersion } "
}
tomcat {
httpProtocol = ' org.apache.coyote.http11.Http11Nio2Protocol '
ajpProtocol = ' org.apache.coyote.ajp.AjpNio2Protocol '
} com.bmuschko.tomcat 플러그인은 다음과 같은 작업을 사전 정의합니다.
| 작업 이름 | 의존합니다 | 유형 | 설명 |
|---|---|---|---|
| Tomcatrun | - | Tomcatrun | Tomcat 인스턴스를 시작하고 폭발 된 웹 응용 프로그램을 배포합니다. |
| Tomcatrunwar | - | Tomcatrunwar | Tomcat 인스턴스를 시작하고 전쟁을 배치합니다. |
| Tomcatstop | - | Tomcatstop | Tomcat 인스턴스를 중지합니다. |
| Tomcatjasper | - | Tomcatjasper | JSP 컴파일러를 실행하고 Jasper를 사용하여 JSP 페이지를 Java 소스로 전환합니다. |
Tomcat 플러그인은 전쟁 플러그인과 동일한 레이아웃을 사용합니다.
Tomcat 플러그인은 tomcat 이라는 확장을 통해 다음 속성을 노출시킵니다.
httpPort : Tomcat이 HTTP 요청을 듣는 TCP 포트 (기본값 8080 ).httpsPort : Tomcat이 HTTPS 요청을 듣는 TCP 포트 (기본값 8443 ).ajpPort : Tomcat이 AJP 요청을 듣는 TCP 포트 ( 8009 의 기본값).stopPort : Tomcat이 관리 요청을 듣는 TCP 포트 (기본값 8081 ).stopKey : 중지를 요청할 때 Tomcat로 전달되는 열쇠 (기본값으로 null ).contextPath : 웹 응용 프로그램이 등록 될 URL 컨텍스트 경로 (기본값으로 전쟁 이름).enableSSL : HTTPS 커넥터를 생성 해야하는지 여부를 결정합니다 (기본값으로 false ).daemon : Tomcat 서버가 백그라운드에서 실행되어야하는지 여부를 지정합니다. 사실 일 때이 작업은 서버가 시작 되 자마자 완료됩니다. False 인 경우이 작업은 Tomcat 서버가 중지 될 때까지 차단됩니다 (기본값으로 false ).keystoreFile : SSL에 사용할 키 스토어 파일 (기본적으로 키 스토어가 생성됨).httpProtocol : 사용할 http 프로토콜 핸들러 클래스 이름 ( org.apache.coyote.http11.Http11Protocol 에 대한 기본값).httpsProtocol : 사용할 https 프로토콜 핸들러 클래스 이름 ( org.apache.coyote.http11.Http11Protocol 에 대한 기본값).ajpProtocol : 사용될 AJP 프로토콜 처리기 클래스 이름 ( org.apache.coyote.ajp.AjpProtocol 에 대한 기본값).users : username , password 및 roles 있는 사용자 목록. 이러한 사용자와 함께 기본 인증으로 Tomcat을 구성하는 데 사용됩니다. 다음 예제 코드는 기본 HTTP/HTTPS 포트를 변경하는 방법을 보여줍니다. SSL을 활성화하기 위해 속성 enableSSL true 로 설정합니다. 웹 애플리케이션은 컨텍스트 경로 sample-app 에서 액세스 할 수 있습니다.
tomcat {
httpPort = 8090
httpsPort = 8091
enableSSL = true
contextPath = ' sample-app '
users {
user {
username = ' user1 '
password = ' 123456 '
roles = [ ' developers ' , ' admin ' ]
}
user {
username = ' user2 '
password = ' abcdef '
roles = [ ' manager ' ]
}
}
}또한 다음 옵션 작업 속성을 설정할 수 있습니다.
contextPath : URL 컨텍스트 경로는 웹 응용 프로그램이 (기본값으로 전쟁 이름으로) 등록됩니다.webDefaultXml : 기본 web.xml. org.apache.catalina.servlets.DefaultServlet 및 org.apache.jasper.servlet.JspServlet 의 인스턴스가 정의되지 않으면 설정됩니다.additionalRuntimeResources : 웹 응용 프로그램에서 제공하지 않은 추가 런타임 항아리 또는 디렉토리를 정의합니다.URIEncoding : HTTP 커넥터 (기본값으로 UTF-8 )에 의해 URI 바이트를 해독하는 데 사용되는 문자 인코딩을 지정합니다.daemon : Tomcat 서버가 백그라운드에서 실행되어야하는지 여부를 지정합니다. 사실 일 때이 작업은 서버가 시작 되 자마자 완료됩니다. False 인 경우이 작업은 Tomcat 서버가 중지 될 때까지 차단됩니다 (기본값으로 false ).configFile : Tomcat 컨텍스트 XML 파일의 경로 ( tomcatRun 의 경우 src/main/webapp/META-INF/context.xml 로의 기본값, tomcatRunWar 의 전쟁 내에서 META-INF/context.xml 에 대한 기본값).outputFile : Tomcat 로그 메시지를 작성하는 파일. 파일이 이미 존재하면 새 메시지가 추가됩니다.reloadable : 컨텍스트 파일을 사용하지 true 컨텍스트 스캔keystorePass : 활성화 된 경우 SSL에 사용할 KeyStore 비밀번호입니다.truststoreFile : 활성화 된 경우 SSL에 사용할 TrustStore 파일입니다.truststorePass : 활성화 된 경우 SSL에 사용할 TrustStore 비밀번호.clientAuth : 사용하려는 ClientAuth 설정, 값은 true , false 또는 want (기본값으로 false ) 일 수 있습니다. 참고 : keystoreFile 및 truststoreFile 각각 File 객체의 인스턴스가 필요합니다. 예를 들어 file("/path/my.file")
다음 예제 코드에서는 tomcatRun 작업에 대한 사용자 정의 컨텍스트 파일을 선언합니다.
tomcatRun . configFile = file( ' context.xml ' ) Jasper 컴파일러 작업을 구성하려면 tomcat 확장자의 jasper 폐쇄 내에서 다음 속성을 설정하도록 선택할 수 있습니다.
validateXml : web.xml 검증 해야하는지 확인합니다 (기본값으로 null ).validateTld : web.xml 검증 해야하는지 확인합니다 (기본값으로 null ).uriroot : 웹 응용 프로그램 루트 디렉토리 (기본값 src/main/webapp ).webXmlFragment : web.xml 파일에서 참조 할 생성 된 웹 XML 조각 파일.addWebXmlMappings : 생성 된 Web XML 조각을 web.xml 파일에 자동으로 추가합니다. 주의 : 이렇게하면 빌드 디렉토리가 아닌 프로젝트에서 web.xml 파일이 수정됩니다.outputDir : 컴파일 된 JSPS가 끝나는 출력 디렉토리 ( build/jasper 의 기본값).classdebuginfo : 클래스 파일을 디버깅 정보로 컴파일해야합니다 ( true 으로).compiler : JSP 페이지를 컴파일하는 데 사용해야하는 컴파일러 개미가 어떤 컴파일러를 사용해야합니다. 자세한 내용은 ANT 문서를 참조하십시오. 값이 설정되지 않으면 Ant를 사용하는 대신 기본 Eclipse JDT Java 컴파일러가 사용됩니다. 기본값이 없습니다.compilerSourceVM : JDK 버전은 소스 파일과 호환됩니다 (기본값 1.6 ).compilerTargetVM : JDK 버전은 생성 된 파일과 호환됩니다 (기본값 1.6 ).poolingEnabled : 태그 핸들러 풀링이 활성화되어 있는지 여부를 결정합니다. 이것은 컴파일 옵션입니다. 이미 컴파일 된 JSP의 동작을 변경하지는 않습니다 (기본값은 true 으로).errorOnUseBeanInvalidClassAttribute : Jasper가 UseBean 조치에서 클래스 속성의 값이 유효한 Bean 클래스가 아닐 때 오류를 발행해야합니다 ( true 으로의 기본값).genStringAsCharArray : 텍스트 문자열을 숯 배열로 생성하고 경우에 따라 성능을 향상시켜야합니다 (기본값으로 false ).ieClassId : <jsp:plugin> 태그를 사용할 때 인터넷 익스플로러로 전송 될 클래스 ID 값 ( clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 ).javaEncoding : Java 소스 파일을 생성하는 데 사용하기 위해 Java 파일 인코딩 ( UTF8 에 대한 기본값).trimSpaces : 템플릿 텍스트의 흰색 공간이 동작이나 지시문 간의 텍스트를 다듬어야합니다 (기본값은 TrimSpaces.TRUE ).xpoweredBy : 생성 된 서블릿에 의해 X-powered by Response 헤더가 추가되는지 여부를 결정합니다 (기본값으로 false ).tomcat {
jasper {
validateXml = true
webXmlFragment = file( " $w ebAppDir /WEB-INF/generated_web.xml " )
outputDir = file( " $w ebAppDir /WEB-INF/src " )
}
}JSP를 호출 할 때 컴파일 예외가 발생합니다. 내가 놓친 것이 있습니까?
당신이 볼 수있는 예외는 아마도 이것과 유사 할 것입니다 : org.apache.jasper.JasperException: Unable to compile class for JSP . Tomcat 7.x 및 8.x는 클래스 경로에 ECLIPSE ECJ 3.6.x를 필요로합니다. 그러나이 버전의 종속성은 Maven Central에는 존재하지 않습니다. 해당 종속성을 다운로드하여 자신의 저장소에 넣거나 로컬 디스크의 저장소를 정의해야합니다.
repositories {
flatDir name : ' localRepository ' , dirs : ' lib '
} javax.servlet.Servlet 에서 java.lang.ClassCastException 을받는 이유는 무엇입니까?
Tomcat은 ClassPath의 여러 버전의 종속성 javax.servlet:servlet-api javax.servlet:jsp-api 갖는 데 매우 민감합니다. 기본적으로 그들은 이미 임베디드 Tomcat 라이브러리의 전이 의존성으로 끌어 당겼습니다. 당신이 볼 수있는 예외는 이것과 유사하게 보입니다.
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
이 문제를 해결하려면 다음과 같이 providedCompile 범위를 사용하여 JSP 및 Servlet 모듈 종속성을 정의하십시오.
providedCompile ' javax.servlet:servlet-api:2.5 ' ,
' javax.servlet:jsp-api:2.0 '플러그인으로 시작한 Tomcat을 원격 디버그하려면 어떻게해야합니까?
응용 프로그램을 원격으로 디버깅하려면 컨테이너를 시작하기 전에 GRADLE_OPTS 환경 변수에서 다음 JVM 옵션을 설정해야합니다. 선택한 포트 번호는 귀하에게 달려 있습니다.
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
그런 다음 Tomcat은 수신 원격 디버깅 연결을 위해 지정된 포트에서 듣습니다. 컨테이너를 시작할 때 다음 메시지가 표시됩니다.
Listening for transport dt_socket at address: 5005
원격 디버깅 포트에 연결하는 방법에 대한 IDE 문서를 확인하십시오.
내 Tomcat 컨테이너는 JNDI 데이터 소스를 사용해야합니다. 프로젝트를 어떻게 설정합니까?
우선 tomcat 구성을 사용하여 연결 풀 종속성을 선언해야합니다.
Tomcat 6.0.x :
def tomcatVersion = ' 6.0.35 '
tomcat " org.apache.tomcat:dbcp: ${ tomcatVersion } "자세한 내용은 Maven Central의 좌표를 참조하십시오.
이후 버전 :
def tomcatVersion = ' 9.0.8 '
tomcat " org.apache.tomcat:tomcat-dbcp: ${ tomcatVersion } "자세한 내용은 Maven Central의 좌표를 참조하십시오.
기본 설정으로 이동하기로 결정한 경우 context.xml 을 디렉토리 src/main/webapp/META-INF 에 배치하십시오. 사용자 정의 위치를 설정하려면 컨벤션 속성 configFile 사용할 수 있습니다. 다음은 tomcatRun 과 tomcatRunWar 작업을 설정하는 방법에 대한 예입니다.
[tomcatRun, tomcatRunWar] * . configFile = file( ' context.xml ' )컨텍스트 속성 목록은 Tomcat 문서를 참조하십시오. 다음 예는 MySQL JNDI 데이터 소스를 설정하는 방법을 보여줍니다.
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< Context >
< Resource name = " jdbc/mydatabase "
auth = " Container "
type = " javax.sql.DataSource "
username = " superuser "
password = " secretpasswd "
driverClassName = " com.mysql.jdbc.Driver "
url = " jdbc:mysql://localhost:3306/mydb "
validationQuery = " select 1 "
maxActive = " 10 "
maxIdle = " 4 " />
</ Context >플러그인과 함께 핫 코드 배포를 어떻게 사용합니까?
플러그인은 reloadable 속성을 통해 바이트 코드 교환을위한 기본적으로 지원을 제공합니다. 기본적 으로이 옵션은 추가 구성 변경이 필요하지 않습니다. tomcatRun 이 시작한 컨테이너의 실행 된 인스턴스를 갖는 것입니다. 좋아하는 편집기를 발사하고, 프로덕션 소스 파일을 변경하고, 저장하고, gradle compileJava 통해 다른 터미널에서 소스를 다시 컴파일하십시오. 몇 초 후 컨텍스트가 다시로드되고 컨테이너를 실행하는 터미널 창에 반영된 동작이 나타납니다.
Reloading Context with name [/myapp] has started
Reloading Context with name [/myapp] is completed
또는 다른 상품 바이트 코드 스왑 기술을 사용할 수 있습니다. 구성은 일반적으로 제품 별입니다. 프로젝트를 설정하는 방법에 대한 제품 문서를 참조하십시오. 다음 섹션에서는 Gradle을 설정하는 방법과 Jrebel을 사용하여 플러그인을 설명합니다. 우선 Jrebel을 다운로드하고 컴퓨터에 설치하고 라이센스를 설정하십시오. 변경된 바이트 코드를 스캔 할 디렉토리에 JREBEL을 알려주려면 Rebel.xml 파일을 만들어야합니다. 웹 모듈에서 파일을 build/classes/main 아래에 배치하여 Tomcat 플러그인으로로드 할 수 있습니다. 파일 구성을 만들기 위해 Gradle Jrebel 플러그인이 편리합니다. 플러그인을 사용할 필요는 없습니다. 손으로 구성을 작성하기로 결정할 수도 있습니다. gradle clean 은 파일을 삭제합니다. 다중 모듈 프로젝트 시나리오에서 jrebel을 설정하려면 문서를 참조하십시오. 다음 코드 스 니펫은 rebel.xml 파일의 예를 보여줍니다.
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< application xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance " xmlns = " http://www.zeroturnaround.com "
xsi : schemaLocation = " http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd " >
< classpath >
< dir name = " /Users/ben/dev/projects/mywebproject/build/classes/main " >
</ dir >
</ classpath >
< web >
< link target = " / " >
< dir name = " /Users/ben/dev/projects/mywebproject/src/main/webapp " >
</ dir >
</ link >
</ web >
</ application > Gradle 스타트 업 스크립트를 편집하고 다음 줄을 추가하여 Gradle에게 Jrebel 에이전트를 사용하도록 지시하십시오. JREBEL 설치 디렉토리를 가리키는 환경 변수 REBEL_HOME 설정하십시오.
JAVA_OPTS="-javaagent:$REBEL_HOME/jrebel.jar $JAVA_OPTS"
gradle tomcatRun 사용하여 웹 모듈을 시작하면 사용중인 JREBEL 라이센스에 대한 정보와 변경 사항을 스캔해야합니다. 이 예제 rebel.xml 파일의 경우 다음과 같습니다.
JRebel: Directory '/Users/ben/dev/projects/mywebproject/build/classes/main' will be monitored for changes.
JRebel: Directory '/Users/ben/dev/projects/mywebproject/src/main/webapp' will be monitored for changes.
파일이 다시 컴파일 된 경우 Jrebel은 다음과 같이 콘솔에 작성하여이를 나타냅니다.
JRebel: Reloading class 'de.muschko.web.controller.TestController'.
내 빌드의 일부로 홍수 내 통합 테스트를 실행해야합니다. 무엇을해야합니까?
일반적으로 단위 및 통합 테스트는 컨벤션별로 개별적으로 유지됩니다. 하나의 컨벤션은 테스트 소스 파일의 이름을 다르게 지정하는 것입니다. 예를 들어 통합 테스트는 항상 접미어 IntegrationTest 테스트로 끝나고 단위 테스트 파일은 Test 로 끝납니다. 그렇게함으로써 별도로 실행할 수 있습니다. 통합 테스트를 실행하려면 Tomcat 작업을 데몬 스레드로 실행하고 테스트가 완료되면 종료해야합니다. 다음 예제는이 기능을 제공하는 Gradle 작업을 설정하는 방법을 보여줍니다. 물론 이것은 그것을하는 한 가지 방법 일뿐입니다. 다음 예제는 Gradle> = 1.7이 필요합니다.
apply plugin : ' com.bmuschko.tomcat-base '
ext {
tomcatStopPort = 8081
tomcatStopKey = ' stopKey '
}
task integrationTomcatRun( type : com.bmuschko.gradle.tomcat.tasks.TomcatRun ) {
stopPort = tomcatStopPort
stopKey = tomcatStopKey
daemon = true
}
task integrationTomcatStop( type : com.bmuschko.gradle.tomcat.tasks.TomcatStop ) {
stopPort = tomcatStopPort
stopKey = tomcatStopKey
}
task integrationTest( type : Test ) {
include ' **/*IntegrationTest.* '
dependsOn integrationTomcatRun
finalizedBy integrationTomcatStop
}
test {
exclude ' **/*IntegrationTest.* '
}내 웹 애플리케이션 소스 코드의 일부가 아닌 JAR 파일이나 디렉토리를 추가하려면 어떻게합니까?
AbstractTomcatRun 유형의 모든 작업은 웹 애플리케이션 런타임 클래스 경로와 혼합하는 데 사용되는 additionalRuntimeResources 라는 속성을 노출시킵니다.
[tomcatRun, tomcatRunWar] . each { task ->
task . additionalRuntimeResources << file( ' /Users/bmuschko/config/props ' )
task . additionalRuntimeResources << file( ' /Users/bmuschko/ext/jars/my.jar ' )
}