サードパーティのjarパッケージに依存してMavenの構成は、マルチ環境の設定とプロファイルをパッケージ化

深い探査┑(¯▽¯)によって引き起こされるパッケージ不良の展開によって┍

A、Mavenの設定

1、概要

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>
 
  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>
 
  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>
 
  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

2、基本的な構成

groupId +たartifactId +バージョン:プロジェクトのユニークなポジショニングの組成のgroupIdとバージョンが親から継承されている場合、あなたが明示的に定義する必要はありません;
パッケージ:定義がパッケージ化され、現在の主要な包装方法は、POM、瓶、Mavenの、プラグインされていますパッケージはデフォルトモードジャーである、EJB、戦争、耳、RAR、;
プロパティ:定数定義されたポンポン、ポンポン定数は$ {}で参照されるファイル内のどこにでもあることができます。

3、ビルド構成

ビルド構成は、「プロジェクトのビルド」と「プロファイルのビルド」2つに分割されています

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <!-- "Project Build" contains more elements than just the BaseBuild set -->
  <build>...</build>
 
  <profiles>
    <profile>
      <!-- "Profile Build" contains a subset of "Project Build"s elements -->
      <build>...</build>
    </profile>
  </profiles>
</project>

ビルド:ディレクトリ構造とプラグインの管理プロジェクトを定義します。

<build>
  <defaultGoal>install</defaultGoal>
  <directory>${basedir}/target</directory>
  <finalName>${artifactId}-${version}</finalName>
  <filters>
    <filter>filters/filter1.properties</filter>
  </filters>
  ...
</build>

defaultGoal:なターゲットとして、デフォルトのターゲットまたは段階を指定するjarファイルことがありますjarファイル、インストール段階では、これらの同じ2つの効果であってもよく、
ディレクトリ:ターゲットディレクトリの構築、デフォルトではBASEDIR} {$ /ターゲットである;
finalName:プロジェクトは、最終的に得られます; -名前は、デフォルトではたartifactId} {$ {バージョン} $である
アプリケーション* .propertiesファイルのニーズを定義する:フィルタ。言い換えれば、フィルタは「名前=値」は、リソースファイル$ {name}の文字列を置換するビルドファイルで定義されています。Mavenのディレクトリは、デフォルトのフィルタのbasedir} {$ / srcに/メイン/フィルタであり、
リソース:リソースリスト、プロジェクトの説明、および場所に関連付けられたファイルの内容

  <build>
    ...
    <resources>
      <resource>
        <targetPath>META-INF/plexus</targetPath>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/plexus</directory>
        <includes>
          <include>configuration.xml</include>
        </includes>
        <excludes>
          <exclude>**/*.properties</exclude>
        </excludes>
      </resource>
    </resources>
    ...
  </build>

;:TARGETPATHプロジェクトは、リソースファイルの配置場所を生成する定義した後、デフォルトの場所はBASEDIR} {$で
フィルタリングがこのリソースを有効にするかどうかを定義するには、オプションの真の値またはfalse:フィルタリング。そして、フィルタ、組み合わせて、プロファイル要素;
ディレクトリ:定義はデフォルトの場所は$ {BASEDIR} / srcに/メイン/リソースであるリソースファイルを見つける;
含まれます含めるとサポートするリソースファイル定義ディレクトリの必要性を*ファイル名に一致するワイルドカードとして。
除外:同じ構造、無視するリソースファイルを含んで定義したディレクトリ、競合がある場合に備えており、除外、除外が優先します;

4、環境設定

プロフィール:ビルド環境に応じて設定を変更します。

<profiles>
    <profile>
      <id>test</id>
      <activation>...</activation>
      <build>...</build>
      <modules>...</modules>
      <repositories>...</repositories>
      <pluginRepositories>...</pluginRepositories>
      <dependencies>...</dependencies>
      <reporting>...</reporting>
      <dependencyManagement>...</dependencyManagement>
      <distributionManagement>...</distributionManagement>
    </profile>
  </profiles>

活性化:現在のプロファイルが記述活性化内部の条件が満たされた場合、現在のプロファイルが活性化され、活性化された条件に記載されています。

<profiles>
    <profile>
      <id>test</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <jdk>1.5</jdk>
        <os>
          <name>Windows XP</name>
          <family>Windows</family>
          <arch>x86</arch>
          <version>5.1.2600</version>
        </os>
        <property>
          <name>sparrow-type</name>
          <value>African</value>
        </property>
        <file>
          <exists>${basedir}/file2.properties</exists>
          <missing>${basedir}/file1.properties</missing>
        </file>
      </activation>
      ...
    </profile>
  </profiles>

activeByDefault:それはデフォルトで有効にされているかどうか、
JDK:動作環境のJDKバージョン番号;
OS:プロパティオペレーティング環境のオペレーティングシステム;
ファイル:ファイルが存在しないか、どのようなファイルが不足しています。

第二に、サードパーティ製のパッケージに依存するJARパッケージ

Mavenのプロジェクトは、時々 、サードパーティに遭遇した場合は、パッケージ依存している必要があり、この時点でのMavenリポジトリを展開したくない場合は、あなたが行うことができます:
戦いのjarパッケージ
1、サードパーティの依存関係を格納するための新しいディレクトリを作成し、ディレクトリの場所は、個人の好みに依存しますここlibに新しいプロジェクトのルートディレクトリに置かれ;
2は、POMファイルには、依存関係を追加します。

<dependency>
        <groupId>xx</groupId>
        <artifactId>xx</artifactId>
        <version>2.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/xx-xx-2.0.jar</systemPath>
    </dependency>

3、目的がヒットBOOT-INF / libに/ダウンで、サードパーティ製のlibに依存している、ビルド要素ポンポンファイル内のリソース設定を追加します。生成されていない袋にビルドリソースファイルに元のプロジェクトのデフォルトリソース構成結果のうち、この構成の前面をカバーするために追加されますので、ここではまだ、別のリソースを設定する必要があります。

 <resources>
        <resource>
            <directory>lib</directory>
            <targetPath>BOOT-INF/lib/</targetPath>
            <includes>
                <include>**/*.jar</include>
            </includes>
         </resource>
         <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>

戦争パッケージの再生
ステップのjarパッケージに1を、変更するにはステップ3必要

<!--设置maven-war-plugins插件 -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <webResources>
                <resource>
                    <directory>lib</directory>
                    <targetPath>WEB-INF/lib/</targetPath>
                    <includes>
                        <include>**/*.jar</include>
                    </includes>
                </resource>
            </webResources>
        </configuration>
    </plugin>

三、プロファイルのマルチ環境設定

1は、フィルタ構成ファイル、新しいフィルタディレクトリを格納するための新しいディレクトリを作成し、3つの環境プロファイルはlocalhost.properties、test.properties、prod.propertiesにあります。
2、POMファイル、追加の構成プロファイル

<profiles>
        <profile>
            <id>localhost</id>
            <properties>
                <profiles.active>localhost</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
    </profiles>

3、ビルド要素にポンポン設定ファイルを追加

<resources>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
            <include>**/*</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>
<filters>
    <filter>${basedir}/filters/${profiles.active}.properties</filter>
</filters>

図4は、$ {BASEDIR} / resourcesディレクトリ下のメイン一般的なプロファイル/ SRCを/調製に$ {名前}プレースホルダ(プレースホルダ@名@使用SpringBoot項目)設定値を使用する環境に対応するプロファイルを取得するためにフィルタ

参考記事:
https://www.jianshu.com/p/574f74d1d0ee
http://maven.apache.org/pom.html

おすすめ

転載: www.cnblogs.com/irain/p/12030646.html