다음 편집기는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!