문제

배경 : Maven 프로젝트에서 기능 테스트 모듈을 설정하고 있습니다. 우리는 사용합니다 Maven-Jetty-Plugin 시험용.

Jetty 플러그인을 설정했습니다 여기에 설명 된대로 (Failsafe 플러그인과 잘 놀리려면),하지만 제가하고 싶은 것은 Jetty를 사용하여 주요 웹 모듈에서 War Artifact를 배포하는 것입니다 (기능 테스트 모듈이 실행될 때까지 로컬 Maven Repo에 설치되었습니다. ).

Jetty 플러그인 런아 목표 a <webApp> 배치하기 위해 전쟁으로 문자열 경로를 취하는 요소. 웹 모듈에 의해 정의 된 Maven 좌표를 사용하여 전쟁을 배치 할 전쟁을 많이 지정하고 있습니다. 이것을 할 방법이 있습니까?

가능한 해결 방법 :

  1. "Maven과 함께 더 나은 빌드"의 4.13 절 화물을 사용하여 Maven 좌표를 사용하여 지정된 전쟁을 배치하는 것을 설명하지만, 우리가 부두를 사용하고 있다는 점에서 심각한 과잉입니다.
  2. 보다 합리적인 IMO는 종속성을 사용하는 것입니다 : 복사하여 방금 제작 된 및 설치된 전쟁 아티팩트를 기능 테스트 모듈의 대상 디렉토리의 고정 경로에 복사 한 다음 Jetty Plugin의 대상 디렉토리에서 제공 할 수 있습니다. <webApp> 구성 요소.
도움이 되었습니까?

해결책

Jetty Plugin의 Run-war 목표에는 배치하기 위해 전쟁의 문자열 경로를 취하는 요소가 있습니다. 웹 모듈에 의해 정의 된 Maven 좌표를 사용하여 전쟁을 배치 할 전쟁을 많이 지정하고 있습니다. 이것을 할 방법이 있습니까?

이것은 실제로 Maven Jetty 플러그인을 사용해야하는 것이 아니며 플러그인은 현재 모듈의 전쟁을 배포합니다. 원하는 것은 기본적으로 지원되지 않습니다.

"Maven을 사용한 Better Builds"의 4.13 절은화물을 사용하여 Maven 좌표를 사용하여 지정된 전쟁을 배치하는 것을 설명합니다.

예,화물은 깨끗한 방식으로 이것을 할 수 있습니다.

그러나 우리가 부두를 사용하고 있다는 점을 감안할 때 그것은 심각한 과잉입니다.

동의하지 않습니다. 첫째, Jetty 플러그인은 상자 밖으로 수행하려는 작업을 지원하지 않으므로 올바른 도구가 아닐 수도 있습니다). 초, 심각한 과잉 특히화물에 내장 된 부두에 대한 구성 (0?)이 거의 필요하지 않다는 점을 감안할 때, 특히 과장된 오해입니다.

보다 합리적인 IMO는 종속성을 사용하는 것입니다 : 복사하여 방금 제작 된 및 설치된 전쟁 아티팩트를 기능 테스트 모듈의 대상 디렉토리의 고정 경로에 복사하십시오.

범죄는 없지만 전체 질문은 다음과 같습니다. 망치가 있고 손톱이 괜찮 았습니다. 스크류 드라이버를 얻는 것이 심각한 과잉처럼 보인다는 점을 감안할 때 나사에 사용할 수 있습니까? 이 질문에 대답하려면 (어떻게 든 당신이 말하는 것), 당신은 사용할 수 있습니다. dependency:copy 그리고 Maven Jetty 플러그인과 함께 일하는 모든 것을 얻으십시오. 그러나 이것은 해킹입니다 (실제로 질문을하지 않기 때문에 이것에 대한 의견을 원했던 것 같습니다). 물론 최종 결정은 당신에게 속합니다 :)

만일을 대비하여화물을 사용하여 이것을 구현하는 방법은 다음과 같습니다.

<dependencies>
  <dependency>
    <groupId>war group id</groupId>
    <artifactId>war artifact id</artifactId>
    <type>war</type>
    <version>war version</version>
  </dependency>
  ...
</dependencies>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <configuration>
        <!-- Container configuration -->
        <container>
          <containerId>jetty6x</containerId>
          <type>embedded</type>
        </container>
        <!-- Configuration to use with the container or the deployer -->
        <configuration>
          <deployables>
            <deployable>
              <groupId>war group id</groupId>
              <artifactId>war artifact id</artifactId>
              <type>war</type>
              <properties>
                <context>war context</context>
              </properties>
            </deployable>
          </deployables>
        </configuration>
        <!-- Don't wait, execute the tests after the container is started -->
        <wait>false</wait>
      </configuration>
      <executions>
        <execution>
          <id>start-container</id>
          <phase>pre-integration-test</phase>
          <goals>
            <goal>start</goal>
          </goals>
        </execution>
        <execution>
          <id>stop-container</id>
          <phase>post-integration-test</phase>
          <goals>
            <goal>stop</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

그리고 나는 이것이 "심각한 과잉"으로 객관적으로 자격을 갖추게 될 것이라고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top