> Java > java지도 시간 > 본문

Java 애플리케이션 Maven 프로젝트 사용자 정의 zip 패키지 예(필독)

黄舟
풀어 주다: 2017-05-21 10:38:16
원래의
1657명이 탐색했습니다.

다음 편집기는 Java 애플리케이션 Maven 프로젝트에 대한 사용자 정의 zip 패키지를 생성하는 예를 제공합니다(권장). 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집기를 따라 살펴보겠습니다

1. pom.xml 파일을 구성하고 빌드 노드를 추가합니다

<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>
로그인 후 복사

이 pom 구성 파일에서 빨간색 글꼴 부분에 주목하세요. 이는 외부 구성 파일을 구현하는 핵심 구성입니다. 구성 파일이 jar 패키지에 들어가지 않고 외부에 배치되며 폴더가 설정된다는 것입니다. 서브루틴이 통과할 수 있도록 클래스 경로에 클래스로더에 따라 구성 파일을 쉽게 읽을 수 있습니다. 다음은 구성 파일을 읽는 자바 코드입니다. 구성 파일은 항상 클래스 경로에서 찾을 수 있으므로 IDE 실행 중이나 패키징 후에 코드를 수정할 필요가 없습니다! ! !

도구 패키지의 Maven 정보

<dependency>
  <groupId>commons-configuration</groupId>
  <artifactId>commons-configuration</artifactId>
  <version>1.10</version>
</dependency>
로그인 후 복사

2. 새로운 maven - 어셈블리 플러그인 플러그인의 구성 파일 Assembly.xml에는 다음 내용이 있습니다.

<assembly>
  <id>bin</id>
  <formats>
    <format>zip</format>
  </formats>
  <!-- 使用assembly拷贝依赖包 -->
  <!--<dependencySets>-->
    <!--<dependencySet>-->
      <!--<!– 是否包含自己(将项目生成的jar包也输出到lib目录) –>-->
      <!--<useProjectArtifact>false</useProjectArtifact>-->
      <!--<outputDirectory>lib</outputDirectory>-->
    <!--</dependencySet>-->
  <!--</dependencySets>-->
  <fileSets>
    <!-- 从目标目录拷贝文件去压缩 -->
    <fileSet>
      <directory>target</directory>
      <includes>
        <include>*.jar</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>target/lib</directory>
      <outputDirectory>/lib</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>target/config</directory>
      <outputDirectory>/config</outputDirectory>
    </fileSet>

    <!-- 从源目录拷贝文件去压缩 -->
    <fileSet>
      <directory>src/main/run</directory>
      <includes>
        <include>*.sh</include>
        <include>*.cmd</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>src/main</directory>
      <includes>
        <include>ReadMe.txt</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>
로그인 후 복사

이 플러그인은 패키지라이프 사이클에서 실행됩니다. mvn package를 실행하거나 mvn inst all을 실행하면 이 플러그인이 실행될 수 있습니다. 이러한 작업을 수행하기 위해 maven-dependent-plugin이 pom.xml 파일에 구성되어 있고 구성을 반복할 필요가 없기 때문에 여기서 종속성 패키지를 복사하기 위한 코드를 주석 처리했습니다. fileSet은 복사 및 압축해야 하는 파일을 구성할 수 있으며, 디렉토리 경로는 프로젝트 루트 디렉토리에 상대적이고, outputDirectory 경로는 출력 디렉토리 대상에 상대적이며, 포함은 복사된 파일을 필터링할 수 있습니다. 여기에서 압축된 출력 디렉터리의 파일을 복사할 수 있습니다. 이는 프로그램이 컴파일되고 패키징된 후에 이 플러그인이 실행되기 때문입니다. 이러한 방식으로 사용자 정의 패키징 요구 사항이 충족됩니다. 프로젝트 패키징->복사 종속성 jar 패키지->어셈블리가 복사되고 압축됩니다. 그런 다음 생성된 zip 패키지를 사용하여 배포 및 게시하고 압축을 푼 후 실행할 수 있습니다.

3. 프로그램 패키징 공정도

위 내용은 Java 애플리케이션 Maven 프로젝트 사용자 정의 zip 패키지 예(필독)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿