成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Maven、Jenkins實現(xiàn)自動化部署

工程實例代碼:https://github.com/chocolateBlack/multi_env_folder_maven

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計、柯橋網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

利用Maven、Jenkins實現(xiàn)項目自動化部署,能夠按照bin、conf、lib文件進(jìn)行打包,并能夠通過Jenkins按照環(huán)境一鍵發(fā)不到服務(wù)器

  1. 首先通過Maven插件實現(xiàn)按照不同環(huán)境,生成配置文件
    為了應(yīng)對環(huán)境切換,在配置文件conf.yaml中使用Maven屬性,在項目打包過程制定是按照id為dev的profile進(jìn)行構(gòu)建,還是以id為test的profile進(jìn)行構(gòu)建。其中conf.yaml和profle的配置如下:
    conf.yaml:
    path=${hdfs.path}

profile的配置如下:

<profiles>
<profile>
    <id>dev</id>
    <properties>
            <active.profile>dev</active.profile>
            <!-- 業(yè)務(wù)配置信息 -->
            <hdfs.path>/dev/wh/source/tp</hdfs.path>
    </properties>
    <activation>
            <activeByDefault>true</activeByDefault>
    </activation>
</profile>
<profile>
    <id>test</id>
    <properties>
            <active.profile>dev</active.profile>
            <!-- 業(yè)務(wù)配置信息 -->
            <hdfs.path>/test/wh/source/tp</hdfs.path>
    </properties>
</profile>
</profiles>

接下來就需要讓maven能夠解析conf文件夾中Maven屬性,這就是maven-resources-plugin要做的事情。
開啟資源過濾,并指定過濾的目錄。以下配置指定src/main/conf目錄下所有類型的文件開啟資源過濾,并將解析后的文件指定輸出到target/class/conf目錄下

<resources>
        <resource>
                <directory>src/main/conf/</directory>
                <filtering>true</filtering>
                <includes>
                        <include>**/*.*</include>
                </includes>
                <targetPath>conf</targetPath><!-- 最終打包的目錄是target/class/conf,用戶assembly插件從這個目錄中讀取編譯好的配置文件 -->
        </resource>
</resources>

2.其次,利用maven-assembly-plugin插件,將編譯好的項目分成bin、conf、lib目錄。

  • maven-assembly-plugin的配置中,指定一個主類這樣可以使用java -jar方式或者java -cp的方式運(yùn)行該項目jar包;
  • 以jar-with-dependencies的方式,將項目依賴的jar包一并打包到一個jar中
  • 指定assembly.xml文件,主要用于編譯好的文件分發(fā)到bin、conf、lib目錄中
    maven-assembly-plugin插件的配置:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <executions><execution><!-- 配置執(zhí)行器 -->
                <id>make-assembly</id>
                <phase>package</phase><!-- 綁定到package生命周期階段上 -->
                <goals>
                        <goal>single</goal><!-- 只運(yùn)行一次 -->
                </goals>
                <configuration>
                        <archive>
                                <manifest>
                                        <!-- 此處指定main方法入口的class -->
                                        <mainClass>com.test.HelloMaven</mainClass>
                                </manifest>
                        </archive>
                        <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <finalName>${project.name}</finalName>
                        <descriptor>src/main/assembly/assembly.xml</descriptor><!--配置描述文件路徑-->
                </configuration>
        </execution>
        </executions>
    </plugin>

關(guān)于文件分發(fā)的assembly.xml配置:

<fileSets>
        <!-- 將src/main/bin下的文件,打包到目標(biāo)目錄的bin文件夾下 -->
        <fileSet>
                <directory>src/main/bin</directory>
                <outputDirectory>bin</outputDirectory>
                <fileMode>755</fileMode>
        </fileSet>
        <!-- 經(jīng)過maven-resources-plugin插件生成的配置文件位于target/classes/conf/中 -->
        <fileSet>
                <directory>target/classes/conf/</directory>
                <outputDirectory>conf</outputDirectory>
                <fileMode>755</fileMode>
                <lineEnding>unix</lineEnding>
                <excludes>
                        <exclude>*.formatted</exclude>
                </excludes>
        </fileSet>
</fileSets>
<dependencySets>
        <!-- 工程單獨(dú)的jar,分發(fā)到lib目錄中 -->
        <dependencySet>
                <fileMode>755</fileMode>
                <outputFileNameMapping>${project.artifactId}-${project.version}.jar</outputFileNameMapping>
                <outputDirectory>/lib/</outputDirectory>
                <scope>runtime</scope>
                <includes>
                        <include>${project.groupId}:${project.artifactId}</include>
                </includes>
        </dependencySet>
        <!-- jar-with-dependencies方式,包含依賴jar的大包,放到lib目錄下 -->
        <dependencySet>
                <fileMode>755</fileMode>
                <outputFileNameMapping>${project.name}-jar-with-dependencies.jar</outputFileNameMapping>
                <outputDirectory>/lib/</outputDirectory>
                <scope>runtime</scope>
        </dependencySet>
</dependencySets>

項目結(jié)構(gòu)圖:
Maven、Jenkins實現(xiàn)自動化部署

通過mvn package -Pdev命令打包后conf中的配置文件是按照dev環(huán)境生成的結(jié)果
解析后的conf.yaml
path=/dev/wh/source/tp
target目錄下的結(jié)構(gòu)圖,紅框標(biāo)記的就是期待的結(jié)構(gòu)目錄
Maven、Jenkins實現(xiàn)自動化部署

3.項目按bin、conf、lib生成部署結(jié)構(gòu),剩下的事情就交給Jenkins,通過Jenkins以及其插件,將打包結(jié)果上傳目標(biāo)服務(wù)器
如下主要描述Jenkins配置的主要幾個位置

  • Build標(biāo)簽下,要在package命令中指令 -P參數(shù)
    Maven、Jenkins實現(xiàn)自動化部署
  • 構(gòu)建后的操作中,要將編譯后的bin、conf、lib目錄,通過插件Send build artifact over SSH插件上傳到服務(wù)器目標(biāo)目錄中
    Maven、Jenkins實現(xiàn)自動化部署

文章標(biāo)題:Maven、Jenkins實現(xiàn)自動化部署
轉(zhuǎn)載來于:http://jinyejixie.com/article4/ggsjoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈、網(wǎng)站營銷云服務(wù)器、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
泾源县| 正蓝旗| 尼勒克县| 大同市| 盘锦市| 德化县| 广水市| 潮州市| 德化县| 大余县| 长沙县| 牡丹江市| 文水县| 南投县| 永胜县| 盐源县| 玉树县| 纳雍县| 连云港市| 宜川县| 开封县| 马公市| 临海市| 晴隆县| 建昌县| 平昌县| 镇安县| 高碑店市| 南昌县| 义马市| 古丈县| 久治县| 南通市| 重庆市| 通江县| 山阳县| 桃园市| 中西区| 格尔木市| 繁峙县| 武川县|