MANIFEST. MF 를 포함 하 는 jar 는 지정 한 classpath 및 spring boot 응용 증분 업그레이드 패키지 구현 을 실행 할 수 있 습 니 다.

MANIFEST. MF 가 포함 되 지 않 거나 jar 패키지 에 있 는 MANIFEST. MF 가 MainClass 를 지정 하지 않 은 jar 에 대해 서 는 자바 명령 행 옵션 - classpath 를 통 해 classpath 를 지정 할 수 있 습 니 다.그러나 MainClass 를 포함 하 는 jar 라면:
Manifest-Version: 1.0Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txtBundle-SymbolicName: org.mybatis.generator.mybatis-generator-coreArchiver-Version: Plexus ArchiverBuilt-By: zjhuaBnd-LastModified: 1559632976998Specification-Title: MyBatis Generator CoreImplementation-Vendor-Id: org.mybatis.generatorBundle-DocURL: http://www.mybatis.org/mybatis-generator/mybatis-genera tor-core/Include-Resource: org/mybatis/generator/config/xml/ibator-config_1_0.d td=src/main/resources/org/mybatis/generator/config/xml/ibator-config_ 1_0.dtd,org/mybatis/generator/config/xml/mybatis-generator-config_1_0 .dtd=src/main/resources/org/mybatis/generator/config/xml/mybatis-gene rator-config_1_0.dtd,org/mybatis/generator/internal/util/messages/mes sages.properties=src/main/resources/org/mybatis/generator/internal/ut il/messages/messages.propertiesImport-Package: com.mysql.jdbc,javax.xml.parsers,org.apache.commons.la ng3,org.apache.log4j,org.apache.tools.ant,org.apache.tools.ant.types, org.w3c.dom,org.xml.saxRequire-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"Main-Class: org.mybatis.generator.api.ShellRunnerImplementation-Build-Date: 2019-06-04 07:22:46+0000
classpath 는 maven 패키지 플러그 인 을 통 해 지정 할 수 있 습 니 다. 다음 과 같 습 니 다.
            <plugin>  
                <groupId>org.apache.maven.pluginsgroupId>  
                <artifactId>maven-jar-pluginartifactId>  
                <configuration>  
                    <archive>  
                        <manifest>  
                            <addClasspath>trueaddClasspath>  
                            <classpathPrefix>lib/classpathPrefix>  
                            <mainClass>com.xxx.uploadFilemainClass>  
                        manifest>  
                    archive>  
                configuration>  
            plugin>  

이렇게 하면 jar 파일 과 같은 디 렉 터 리 의 lib / 아래 의 모든 jar 에 접근 할 수 있 습 니 다.
그리고 저 희 는 maven - dependency - plugin 플러그 인 을 통 해 특정한 가방 을 lib 디 렉 터 리 에 복사 합 니 다. 다음 과 같 습 니 다.
<plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-dependency-pluginartifactId>
                <version>3.0.1version>
                <executions>
                    <execution>
                        <id>copyid>
                        <phase>packagephase>
                        <goals>
                            <goal>copygoal>
                        goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>junitgroupId>
                                    <artifactId>junitartifactId>
                                    <version>4.11version>
                                    <outputDirectory>${project.build.directory}/lib/lib1outputDirectory>
                                artifactItem>
                                <artifactItem>
                                    <groupId>org.slf4jgroupId>
                                    <artifactId>slf4j-log4j12artifactId>
                                    <version>1.7.7version>
                                    <outputDirectory>${project.build.directory}/lib/lib1outputDirectory>
                                artifactItem>
                            artifactItems>
                        configuration>
                    execution>
                executions>
            plugin>

모든 의존 도 를 복사 할 수 있 습 니 다. 다음 과 같 습 니 다.
 <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-dependency-pluginartifactId>
            <executions>
                <execution>
                    <id>copy-dependenciesid>
                    <phase>prepare-packagephase>
                    <goals>
                        <goal>copy-dependenciesgoal>
                    goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/liboutputDirectory>
                        <overWriteReleases>falseoverWriteReleases>
                        <overWriteSnapshots>falseoverWriteSnapshots>
                        <overWriteIfNewer>trueoverWriteIfNewer>
                    configuration>
                execution>
            executions>
        plugin>

실제 상황 은 우리 가 보통 기초 3 자 라 이브 러 리 를 가방 에 넣 고 jar 를 lib 디 렉 터 리 에 복사 하 는 동시에 업그레이드 와 관리 복잡성 을 고려 하기 때문에 최종 적 으로 이렇다.
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <layout>ZIPlayout>
                    <mainClass>org.abc.ConsumerStartermainClass>
                    <excludes>
                        <exclude>
                            <groupId>abc.orggroupId>
                            <artifactId>biz-serviceartifactId>
                        exclude>
                    excludes>
                    <includeSystemScope>trueincludeSystemScope>
                configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackagegoal>
                        goals>
                    execution>
                executions>
            plugin>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-dependency-pluginartifactId>
                <version>3.1.1version>
                <executions>
                    <execution>
                        <id>copyid>
                        <phase>packagephase>
                        <goals>
                            <goal>copygoal>
                        goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>abc.orggroupId>
                                    <artifactId>biz-serviceartifactId>
                                    <version>1.1.0version>
                                    <outputDirectory>${project.build.directory}/liboutputDirectory>
                                artifactItem>
                            artifactItems>
                        configuration>
                    execution>
                executions>
            plugin>

이렇게 걸 린 jar 는 biz - service 를 포함 하지 않 고 단독 lib 디 렉 터 리 에 있 습 니 다.layot ZIP 특성 을 결합 하면 증분 업 그 레이 드 를 완벽 하 게 실현 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기