4

関連するトピックがいくつかあることは知っていますが、それでもその方法を理解できません。

私はmavenを学んでおり、現在ビルドプロファイルを作成中です。マシンに現在インストールされているJavaバージョンをmavenに自動検出させたい。(jdk7)または homeを使用するオフィスで働いているとしましょう。 環境 (オフィス/ホーム) に関係なく、 pom.xml の要素と要素を自動検出する(jdk8)必要があります。について読んだことがありますが、目的を完全には理解できません。<source><target>maven-compiler-pluginjava -versionactivation

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>   
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>    
        </plugin>
    </plugins>
  </build>
4

3 に答える 3

6

こんにちは、ビルド、環境を自動的に認識させることはできないと思います。デフォルトを使用するだけです。プロファイルとそのア​​クティベーション機能の助けが必要ですこちらを参照してください。できることは、2 つの異なるプロファイルを導入することです。各プロファイルで、必要な JDK を定義できます。存在する場合はそれがアクティブ化されます。次に、コンパイラ プラグインを異なるソース/ターゲットで構成するか、異なる値を設定するだけです。 Java のバージョンを示すプロパティです。例:

<profiles>
 <profile>
     <id>java8</id>
     <activation>
       <jdk>1.8</jdk>
     </activation>
   <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>   
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>    
        </plugin>
    </plugins>
  </build>
   </profile>
<profile>
     <id>java7</id>
     <activation>
       <jdk>1.7</jdk>
     </activation>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>   
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>    
        </plugin>
    </plugins>
  </build>
   </profile>
</profiles>

それが役立つことを願っています:)

于 2016-01-05T08:20:45.380 に答える
0

jdk7 ビルド用と jdk8 ビルド用の 2 つの相互に排他的なプロファイルを宣言する必要があります。各プロファイル宣言には、次の 2 つの重要な部分があります。

このactivation要素は条件のようなもので、 内にネストされています。あなたのプロフィールはオンですか、それともオフですか?jdkベースのアクティベーションを設定する必要があります。jdk7 プロファイルの例:

<activation>
  <jdk>1.7</jdk>
</activation>

次に、プロファイルがアクティブなときに設定されるプロパティを定義します。jdk7 の例:

<properties>
    <jdk.version>1.7<jdk.version>
</properties>

これらのセクションは両方ともid要素 (例: <id>jdk7</id>) と結合され、要素内にネストされますprofile

jdk 検出のアクティベーションを機能させるのに問題がある場合は、maven を .xml で呼び出すなど、明示的なトリガーを試してみることをお勧めしmvn -P jdk7ます。

その音から、jdk7 および jdk8 プロファイルを .xml ファイル内で定義する必要がありますpom.xml。ただし、別のオプションは、常にオンになっている単一のプロファイルを持ち、プロファイルのjdk.versionプロパティを~/.m2/settings.xmlファイル内で別の方法で定義することです。オフィスの settings.xml ファイルには jdk7 プロパティが含まれます。自宅ではjdk8になります。

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

于 2016-01-05T08:38:43.277 に答える