IT TIP

사용자 지정 Maven 2 속성에 대한 기본값 설정

itqueen 2020. 12. 3. 21:32
반응형

사용자 지정 Maven 2 속성에 대한 기본값 설정


명령 줄에서 제어 할 수있는 플러그인이있는 Maven pom.xml이 있습니다. 내 컨트롤 속성에 대한 기본값을 설정하는 방법을 알아낼 수없는 동안 인터넷을 검색 한 후에도 모든 것이 정상적으로 작동합니다.

<plugin>
    ...
    <configuration>
        <param>${myProperty}</param>
    </configuration>
    ...
</plugin>

그래서 Maven을 실행하면

mvn -DmyProperty=something ...

모든 것이 괜찮지 만 -DmyProperty=...스위치 없이도 myProperty에 특정 값을 할당하고 싶습니다 . 어떻게 할 수 있습니까?


<build>/<properties>아래와 같이 프로필 에 속성 기본값을 정의 할 수 있습니다 . 명령 줄에 속성 값을 제공 -DmyProperty=anotherValue하면 POM의 정의가 무시됩니다. 즉, POM의 모든 속성 값 정의는 속성의 기본값으로 만 설정됩니다 .

<profile>
    ...
    <properties>
        <myProperty>defaultValue</myProperty>            
    </properties>
    ...
       <configuration>
          <param>${myProperty}</param>
       </configuration>
    ...
</profile>

Taylor L의 접근 방식은 잘 작동하지만 추가 프로필이 필요하지 않습니다. POM 파일에서 속성 값을 선언하기 만하면됩니다.

<project>
  ...
  <properties>
    <!-- Sets the location that Apache Cargo will use to install containers when they are downloaded. 
         Executions of the plug-in should append the container name and version to this path. 
         E.g. apache-tomcat-5.5.20 --> 
    <cargo.container.install.dir>${user.home}/.m2/cargo/containers</cargo.container.install.dir> 
  </properties> 
</project>

각 사용자가 자신의 기본값을 설정할 수 있도록하려는 경우 사용자 settings.xml 파일에서 속성을 설정할 수도 있습니다. 이 접근 방식을 사용하여 CI 서버가 일반 개발자의 일부 플러그인에 사용하는 자격 증명을 숨 깁니다.


아래와 같이 사용할 수 있습니다.

<profile>
    <id>default</id>
    <properties>
        <env>default</env>
        <myProperty>someValue</myProperty>            
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

@akostadinov의 솔루션은 일반적인 사용에 적합합니다 ... 그러나 원하는 속성이 종속성 해결 단계 (mvn pom 계층 구조 처리 초기에 ...) 중에 리액터 구성 요소에서 사용되는 경우 프로필 " none activation "테스트 메커니즘을 사용하여 확인해야합니다. 선택적 명령 줄 제공 값은 항상 pom.xml 내부에 제공된 값과 관련하여 우선 순위가 지정됩니다. 그리고 이것은 당신의 pom 계층 구조입니다.

이렇게하려면 부모 pom.xml에 다음과 같은 종류의 프로필을 추가합니다.

 <profiles>
    <profile>
      <id>my.property</id>
      <activation>
        <property>
          <name>!my.property</name>
        </property>
      </activation>
      <properties>
        <my.property>${an.other.property} or a_static_value</my.property>
      </properties>
    </profile>
  </profiles>

이것은 당신을 위해 일할 수 있습니다.

<profiles>
  <profile>
    <id>default</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <build>
     <plugin>
       <configuration>
        <param>Foo</param>
       </configuration>
     </plugin>
    </build>
    ...
  </profile>
  <profile>
    <id>notdefault</id>
    ...
     <build>
      <plugin>
        <configuration>
            <param>${myProperty}</param>
        </configuration>
     </plugin>
     </build>
    ...
  </profile>
</profiles>

그런 식으로,

mvn clean"foo"를 기본 매개 변수로 사용합니다. 재정의해야하는 경우mvn -P notdefault -DmyProperty=something

참고 URL : https://stackoverflow.com/questions/899274/setting-default-values-for-custom-maven-2-properties

반응형