企業全体でスーパーポーム私たちが使用する多くのデフォルトを定義するために使用します。たとえば、スーパーPomは、使用するJDKのバージョンおよびその他のパラメータを定義します。これは親プロジェクトとして継承されています。プロジェクトpomの親pomに定義されている有効なプロファイルを設定
ほとんどのプロジェクトではJDK 1.7が使用されていますが、一連のプロジェクトはまだJDK 1.6のバージョンです。私は私の親のポンポンで、次のプロファイルの定義を入れている:
<properties>
<travelclick.snapshot.repo>artifactory/libs-snapshot-local</travelclick.snapshot.repo>
<old.javac.source>1.5</old.javac.source>
<old.javac.target>1.6</old.javac.target>
</properties>
<profiles>
...
<profile>
<id>jdk1.6</id>
<build>
<plugins>
<plugin>
<groupId>com.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<...>
<source>${old.javac.source}</source>
<target>${old.javac.target}</target>
<...>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<...>
</profiles>
は今、私はjdk1.6
と呼ばれるプロファイルを持っていると私はそれがデフォルトで、このいずれかを使用する必要があること、プロジェクトのPOMで指定したいと思います。これはどうすればいいですか?私はプロジェクトのPOMに追加しようとしました
:
<profiles>
<profile>
<id>jdk1.6</id>
<activations>
<activeByDefault>true</activeByDefault>
</activations>
</profile>
</profile>
しかし、それは私のJDK1.6プロファイルを再定義します。
私はこの中に入れて試してみた:
<activeProfiles>
<activeProfile>jdk1.6</activeProfile>
</activeProfiles>
しかし、唯一のsettings.xml
に動作すること。
親pomにプロファイルを指定し、これを子pomのアクティブなプロファイルとするにはどうすればよいですか?
もっと試み
私は、プロパティを使用してみました。私の地元のポンポンで
<profiles>
<profile>
<id>jdk1.6</id>
<activation>
<property>
<name>use-jdk1.6</name>
</property>
</activation>
<profile>
</profiles>
そして次:私の親のpom.xmlで
<properties>
<use-jdk1.6>true</use-jdk1.6>
</properties>
しかし、それは、プロファイルをピックアップしていません。そして、これはうまくいきます:
$ mvn -Puse-jdk1.6 clean package site
私は親プロファイルが動作することを知っています。
プロファイル
あなたはあなたがゴール助けをexectuing詳細をプロファイリング追加することができます。私は、コマンドラインからJDK1.6をアクティブにすることができ、すべての-プロファイル
[INFO] Listing Profiles for Project: xxxx
Profile Id: artifactory (Active: true , Source: settings.xml)
Profile Id: jdk1.6 (Active: false , Source: pom)
Profile Id: arse-version (Active: false , Source: pom)
Profile Id: urge (Active: false , Source: pom)
。私はちょうど私の子供のポムのデフォルトとしてそれをアクティブにしたい。
プロファイルを使用する必要がありますか?使用するJDKをオーバーライドしたいだけなら、 'source'には' javac.source'、 'maven-compiler-plugin'の' target'には 'javac.target'のようなMavenプロパティを使います。次に、デフォルトよりも異なるものが必要な場合(親が '1.7'に設定する)、子POMに2つのプロパティを定義させることができます。 – Tunaki
あなたはあなたの状況を複雑にしていると思います。あなたの目標がスーパーPOMで言及されているJDKとは異なるJDKを使ってそれらのプロジェクトをコンパイルすることであれば、あなたの子プロジェクトはそのPOMのコンパイラバージョンを上書きします。これをやろうとしましたか? –
あなたはあなたのプロフィールの詳細を追加できますか? –