왜 당신은 매번 maven으로 전쟁과 귀를 다시 포장해야합니까? 이클립스의 역동적 인 웹 프로젝트로 작업합니까? (실제로 귀하의 요구 사항을 충족하는지는 모르겠지만 모든 정보를 잘 알고있을 수도 있지만 세부 정보를 묻는 명성은 충분하지 않습니다.) =이 -DartifactId가 MavenTestWebapp은 =이 - 원형 - 웹 애플리케이션을 받는다는
MavenTestWebapp
|
\--- JavaSources
| \MyClass.java
|
\--- War
| | ---(pom.xml)
| \ --- src
| \ --- main
| \ --- webapp
| | --- META-INF
| \ --- WEB-INF
|
\(pom.xml)
전쟁의 디렉토리가 -DgroupId입니다 -DarchetypeArtifactId = org.yourgroup 생성 :
이
MVN의 원형을 받는다는와 초안 웹 애플리케이션을 생성 프로젝트의 모듈. JavaSources 디렉토리를 추가하여 명확하게했습니다. 또한 부모 프로젝트에서 의존성 라이브러리를 처리하기 위해 전쟁 디렉토리에 pom.xml을 추가했습니다. 여기에 전쟁 디렉토리에 치어에 대한 예입니다 : 실행 종속성 libs와를 수집하기 위해
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.yourgroup</groupId>
<artifactId>MavenTestWebapp</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>${project.parent.groupId}</groupId>
<artifactId>${project.parent.artifactId}-war</artifactId>
<name>${project.parent.artifactId}-war</name>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<build>
<finalName>MavenTestWebapp-war</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>inplace</goal>
</goals>
</execution>
</executions>
<configuration>
<archiveClasses>true</archiveClasses>
<warSourceDirectory>${basedir}/src/main/webapp/</warSourceDirectory>
<dependentWarExcludes>
WEB-INF/classes/,META-INF/**,WEB-INF/web.xml,**/*.jar,pom.xml
</dependentWarExcludes>
<warSourceExcludes>/src/main/webapp/,target/,WEB-INF/classes/**/*.*</warSourceExcludes>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>${basedir}</directory>
<!-- the list has a default value of ** -->
<includes>
<include>pom.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
가 MVN 명령을 컴파일합니다. 그런 다음 lib 디렉토리가 webapp/WEB-INF 디렉토리에 작성됩니다.
MavenTestWebapp
|
\--- JavaSources
| \MyClass.java
|
\--- War
| | ---(pom.xml)
| \ --- src
| \ --- main
| \ --- webapp
| | --- META-INF
| \ --- WEB-INF
| \ --- libs
| | --- dependency-lib1.jar
| \ --- dependency-lib2.jar
|
\(pom.xml)
실제 포장 전에 junit 테스트와 다른 기능을 실행할 때까지는 마빈을 사용해야하는 마지막 순간입니다. 그러나 지금은 테스트를 위해 Java 클래스를 컴파일하고 배포해야합니다 (올바르게?). Eclipse의 Dynamic Web Projects는 glassfish에 Java 클래스를 빠르게 재배포 할 수있게 해줍니다.
는
작업 영역에서 새로운 동적 웹 프로젝트를 만들고 동적 웹 프로젝트를 만듭니다.웹 모듈 구성 단계에서 JavaSources을이 프로젝트의 Java Source Directory로 설정하십시오. 웹 응용 프로그램을 콘텐츠 디렉토리로 설정하십시오.
이 웹 응용 프로그램에는 웹 개발자가 작업하고 컴파일하고 배포해야하는 모든 클래스가 포함되어 있습니다. 또한 libs 및 컴파일 된 클래스가있는 전체 war 모듈을 포함합니다.
는
작업 영역에서 새 엔터프라이즈 응용 프로그램 프로젝트를 만듭니다 귀를 만듭니다. webapp을이 프로젝트의 모듈로 추가하십시오.
배포 서버보기에서 글래스 피쉬
에 EAR, 글래스 피쉬 서버를 마우스 오른쪽 단추로 클릭하고 MavenTestWebapp 웹 모듈을 포함하는 새로 생성 된 EAR을 추가합니다. 자바 클래스를 수정할 때마다이 EAR을 서버에 게시하십시오. 자동 게시를 허용 할 수는 있지만 일반적으로 짜증납니다.
감사
가 그것을 개선 할 수 있다면 더 나은 솔루션은, 나이 프로젝트에 적합하지 않는 경우, 만족 노하우를 할 경우. 나는별로 경험이 없지만 이전에 이런 종류의 구성으로 작업 해 왔으며 Java 소스를 신속하게 재배포 할 수 있습니다. 감사합니다. @ +
프로젝트 구조에 따라 다릅니다. WAR에 EAR lib 폴더 나 EJB에 대한 의존성이 없으면 WAR (또는 특정 웹 프로젝트) 만 배포하면됩니다. 종속성이있는 경우 EJB를 별도로 배포해야 할 수 있습니다. – unwichtich