2011-03-28 1 views
5

부모 POM이있는 상대적으로 간단한 다중 모듈 메이븐 buid 있습니다. 다음과 같이이 두 아이의 모듈이 포함되어 있습니다 : 메이븐 자식 모듈이 빌드되지 않았습니다.

<modules> 
    <module>WebApp</module> 
    <module>WebService</module> 
</modules> 

나는 깨끗한 MVN을 실행

는 최상위 수준에를 설치 치어는 예상대로 &는 각 하위 모듈을 설치 정리합니다. 그러나 나는 이제 Weblogic 10.3.4에 WebApp .war를 배포하기위한 플러그인 (codehaus weblogic) 목표를 추가하려고합니다. mvn clean install weblogic : deploy. 어떤 이유로 깔끔하고 설치 단계를 실행하지 않지만 배포는 수행합니다. WebApp 디렉토리에서 명령을 실행하면 전개를 수행하기 전에 정리 및 설치가 수행됩니다.

최상위 레벨에서 목표를 실행하는 경우 하위 라이프 사이클 단계를 실행하지 못하는 일부 문제가 있습니까? 다음은 명령 줄 출력은 : 그것은이 웹 로직을 실행

[INFO] Scanning for projects... 
[INFO] Reactor build order: 
[INFO] SupportClient 
[INFO] SupportClient-WebServices 
[INFO] SupportClient-WebApp 
[INFO] Searching repository for plugin with prefix: 'weblogic'. 
[INFO] org.apache.maven.plugins: checking for updates from central 
[INFO] org.codehaus.mojo: checking for updates from central 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building SupportClient 
[INFO] task-segment: [clean, install, weblogic:deploy] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [clean:clean] 
[INFO] [site:attach-descriptor] 
[INFO] [install:install] 
[INFO] Installing C:\Development\Destin8SupportClient\pom.xml to C:\Users\finchaj.HPH\.m2 \repository\com\mcpplc\supportClient\supportClient\1.0\supportClient-1.0.pom 
[INFO] [weblogic:deploy] 
[INFO] Weblogic Deployment beginning with parameters DeployMojoBase[adminServerHostName = localhost, adminServerProtocol = t3, adminServerPort = 8001, userId = xx, password = ****, artifactPath = C:\Development\Destin8SupportClient/WebApp/target/WebApp.war, projectPackaging = war, name = support-client-webapp, targetNames = AdminServer, remote = false] 
[INFO] Weblogic Deployment parameters [-adminurl, t3://localhost:8001, -username, xx, -password, xx, -name, support-client-webapp, -targets, AdminServer, -source, C:\Development\Destin8SupportClient/WebApp/target/WebApp.war, -deploy] 
weblogic.Deployer invoked with options: -adminurl t3://localhost:8001 -username xx-name support-client-webapp -targets AdminServer -source C:\Development\Destin8SupportClient/WebApp/target/WebApp.war -deploy 
The file, 'C:\Development\Destin8SupportClient/WebApp/target/WebApp.war', does not exist. 

답변

2

: 최상위 (! POM) 모듈에 목표를 배포합니다. 이 목표는 전쟁 또는 귀 모듈에서만 실행할 수 있습니다.

설치 단계에서 실행하려면 웹 애플리케이션 하위 모듈에서 해당 목표를 바인딩해야합니다. 현재 최상위 (pom!) 모듈에서 실행 중입니다.

Webapp 하위 모듈의 weblogic 구성에 다음을 추가하십시오.

  • 재 : 당신이 빌드의 끝 부분이 실행를 원하는 경우

    <executions> 
        <execution> 
         <phase>install</phase> 
          <goals> 
          <goal>deploy</goal> 
          </goals> 
        </execution> 
        </executions> 
    

    Example C-1 in this documentation

    를 참조하십시오, 한 번 다른 모든 모듈이 내장 된 경우에 중 하나가 필요합니다 하위 모듈을 주문하면 WebApp이 마지막이므로

  • 또는 웹 애플리케이션 하위 모듈에 따라 마지막으로 실행될 다른 하위 모듈을 추가하십시오. 그런 다음 weblogic 플러그인에 다음 등록 정보 maven.weblogic.war을 지정하여 해당 .war 파일을 사용하도록 지시하십시오. dependency:copy 목표를 먼저 사용하여 해당 마지막 하위 모듈의 대상 디렉토리로 가져올 수 있습니다.
+0

배포 목표는 최상위 수준에서 실행됩니다. 배포가 시작되기 전에 모든 하위 프로젝트를 빌드하기 위해 설치를 수행하려고합니다. 위의 코드는이 인스턴스에서 수행하지 않으려는 웹 애플리케이션 레벨에서만 설치하는 경우에만 관련됩니다. – andyfinch

+0

최상위 프로젝트를 설치할 수 없습니다. 모든 프로젝트를 설치하고 웹 서버에 배포 한 후 정확하게 수행하는 배치 스크립트를 만듭니다. Maven과 weblogic-maven-plugin은 이것을 지원하지 않습니다. – Salandur

+0

배치 목표를 포함하지 않을 때 최상위 레벨에 설치할 수 있습니다. 이렇게하면 지정된대로 하위 모듈이 설치됩니다. 왜 배포 목표를 추가 할 때 자식 프로젝트를 설치하지 않기로 결정합니까? 또한 하위 수준에서 전체 명령을 실행하면 설치 및 배포가 수행되는 이유는 무엇입니까? – andyfinch

1

모든 프로젝트에 대해 먼저 설치 단계를 실행 한 다음 프로젝트를 웹 서버에 배포하려는 경우 메이븐 호출을 분할해야합니다.

mvn clean install 
mvn weblogic:deploy 

기본적으로 maven은 프로젝트 당 모든 작업을 실행하고 별도로 실행하기위한 유일한 해결책입니다.

+0

나는 이것을 생각했지만 한 줄로 지정해야합니다. Teamcity를 사용하고 있는데 명령이 이렇게 분리 될 수 있다고 생각하지 않습니다. – andyfinch

0

maven은 먼저 지정된 모든 목표를 상위 프로젝트에서 실행 한 다음 chldren에서 실행합니다.

로그에서 maven이 부모의 cleaninstall 목표를 실행 한 다음 weblogic:deploy 목표를 실행하려고 시도한 것이 분명합니다. 이제 weblogic:deploy은 자식 웹 응용 프로그램을 배포하기 때문에 부모와 관련된 목표가 분명하지 않습니다. maven은 그 사실을 알지 못합니다.

아마도 npellow의 솔루션은 사용자의 요구 사항에 맞게 작동해야하기 때문에 다시 고려해야합니다.

+0

동의 npellows 답변 – andyfinch