ProgramingTip

Maven : jar 포장에만 outputDirectory를 지정 하시겠습니까?

bestdevel 2021. 1. 6. 20:51
반응형

Maven : jar 포장에만 outputDirectory를 지정 하시겠습니까?


jar 패키징에만 outputDirectory를 지정해야합니까?

http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html 모든 매개 변수가 표시 명령 줄 또는 pom.xml에서 어떻게 접근 수 있습니까?


명령 줄에서

-DoutputDirectory=<path>

그리고 pom.xml에서

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>2.3.1</version>
      <configuration>
        <outputDirectory>/my/path</outputDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

매개 변수 매개 변수

명령 줄 사용 정보 :

매개 변수 문서 는 매개 변수가 특성 값 ${project.build.directory}(대상 폴더를 참조하는 특성 )으로 초기화됨을 지정합니다.

이것이 의미하는 바는 다음과 가변적입니다.

CLI에서 직접 실행하려는 모조의 경우 해당 요청 변수는 일반적으로 <configuration/>POM 섹션 대신 시스템 속성을 통해 구성 할 수있는 수단을 제공합니다 . 매개 변수 설치에 대한 문서에는 시스템이 있습니다. 위의 mojo에서 사용되는 변수 url은 자주 사용되어 있습니다. ${query.url}, 해당 값은 query.url같이 시스템 속성에 의해 지정 될 수 있습니다 .

mvn myquery:query -Dquery.url=http://maven.apache.org

참고 :

$ {project.build.directory} 구성

그러나 ${project.build.directory}, 프로퍼티 아니다 시스템 그것은 숙박 시설의프로젝트object-입니다.Build

명령 줄에서 직접 접근 할 수 있습니다. pom.xml에 자리 표시 할 수는 없지만 약간의 트릭으로 추가 할 수 있습니다.

<build>
    <directory>${dir}</directory>
</build>

이제 출력 디렉토리는 명령 줄의 속성을 통해 설정됩니다 (사용 -Ddir=somedirectory). 단점 : 항상 -Ddir명령 줄 에서 매개 변수 를 사용합니다 .

프로필 사용

하지만 여기에도 도움이됩니다. 디렉토리를 구성하려는 프로필을 사용하십시오.

<profiles>
    <profile>
        <id>conf</id>
        <build>
            <directory>${dir}</directory>
        </build>
    </profile>
</profiles>

이제 당신은 할 수 있습니다

# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir

또는 평범한

# everything goes in target
mvn clean install

Jar 플러그인 구성

이제 대상에서 모든 것을 리디렉션하지 않고 명령 줄에서 jar outputDirectory를 변경하려는 경우 프로필을 수정하여 명령 줄 속성에서 구성합니다.

<profiles>
    <profile>
        <id>conf</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.3.1</version>
                    <configuration>
                        <outputDirectory>${dir}</outputDirectory>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

사용법은 위와 동일합니다.

# everything goes in someOtherDir instead of target
mvn clean install -Pconf -Ddir=someOtherDir

@Sean Patrick Floyd에게 감사드립니다.

프로필을 만들고 mvnalways by -Pswitch를 사용하는 대신 $ {dir} 속성의 기본값을 만드는 다른 방법을 사용하고 싶습니다.

${dir}의 기본값을 다음과 같이 정의하십시오.${project.build.directory}

<properties>
    <dir>${project.build.directory}</dir>
</properties>

@Sean Patrick Floyd와 동일하게 outputDirectory를 설정합니다.

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
            <outputDirectory>${dir}</outputDirectory>
        </configuration>
    </plugin>
</plugins>

이제 당신은 할 수 있습니다

# everything goes in someOtherDir instead of target
mvn clean install -Ddir=someOtherDir

또는 평범한

# everything goes in target
mvn clean install

종속성 jar도 대상 폴더에 복사하려면 maven-dependency-plugin을 사용하십시오.

<project>
  ...
  ...

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <phase>install</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

</project>

참조 URL : https://stackoverflow.com/questions/4757426/maven-specify-the-outputdirectory-only-for-packaging-a-jar

반응형