ホームページ >Java >&#&チュートリアル >Java アプリケーション Maven プロジェクトのカスタム zip パッケージの例 (必読)

Java アプリケーション Maven プロジェクトのカスタム zip パッケージの例 (必読)

黄舟
黄舟オリジナル
2017-05-21 10:38:161662ブラウズ

以下のエディターは、Java アプリケーション Maven プロジェクトの zip パッケージをカスタマイズする例を示します (推奨)。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう。 1. pom を構成します。このアイデアは、サブルーチンが構成を簡単に読み取ることができるように、構成ファイルを jar パッケージに入れずに外部に配置し、フォルダーをクラスパスに設定するというものです。クラスローダーを介してファイルを作成します。以下は、構成ファイルを読み取るための Java コードです。構成ファイルは常にクラスパスから見つかるため、IDE の実行中またはパッケージ化後にコードを変更する必要はありません。 ! !

ツールキットのmaven情報

<build>
    <!-- 输出的包名 -->
    <finalName>p2p</finalName>


    <sourceDirectory>src/main/java</sourceDirectory>

    <resources>
      <!-- 控制资源文件的拷贝(默认复制到classes目录,最后打进jar包) -->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <!-- 排除外置的配置文件(运行时注释上使IDE能读取到配置文件;打包时放开注释让配置文件外置方便修改) -->
        <excludes>
          <exclude>config.properties</exclude>
        </excludes>
      </resource>
      <!-- 配置文件外置的资源(存放到config目录,也是classpath路径,下面会配置) -->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>config.properties</include>
        </includes>
        <targetPath>${project.build.directory}/config</targetPath>
      </resource>
    </resources>

    <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>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <!-- 清单文件,设置入口类和classpath -->
            <manifest>
              <mainClass>com.hdwang.Application</mainClass>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
            <!-- 给清单文件添加键值对,增加classpath路径,这里将config目录也设置为classpath路径 -->
            <manifestEntries>
              <Class-Path>config/</Class-Path>
            </manifestEntries>
          </archive>
          <classesDirectory>
          </classesDirectory>
        </configuration>
      </plugin>


      <!-- 拷贝依赖的jar包到lib目录 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>
                ${project.build.directory}/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>


      <!-- 解决资源文件的编码问题 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!-- 自定义打zip包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

2. 実行時に、mvn packageまたはmvn inst

allを実行して、新しいmaven-assembly-pluginプラグイン構成ファイルアセンブリを作成します。このプラグインの実行。ここで依存関係パッケージをコピーするコードをコメントアウトしました。これは、maven-dependency-plugin がそのような操作を実行するように pom.xml ファイルで構成されており、構成を繰り返す必要がないためです。 fileSet は、コピーおよび圧縮する必要があるファイルを構成できます。ディレクトリ パスはプロジェクトのルート ディレクトリを基準にし、outputDirectory パスは出力ディレクトリ ターゲットを基準にし、includes はコピーされたファイルをフィルタリングできます。ここで、圧縮された出力ディレクトリ内のファイルをコピーできます。これは、このようにして、プログラムがコンパイルおよびパッケージ化された後にこのプラグインが実行されるためです。プロジェクトのパッケージ化 -> 依存関係のコピー jar パッケージ -> アセンブリがコピーされ、圧縮されます。次に、生成された zip パッケージを使用してデプロイおよび公開すると、解凍後に実行できるようになります。

3. プログラムのパッケージ化プロセスの概略図

以上がJava アプリケーション Maven プロジェクトのカスタム zip パッケージの例 (必読)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。