如何使用 Intelij Idea + Maven 实现区分环境并快速编译生成不同环境 war 包

1.需要在 pom.xml 文件中增加以下配置文件
  <project></project>中的 <packaging>war</packaging>
  其中resources_dev,resources_test,resources_pro 文件夹需要创建在与resources同级的目录下,这三个文件夹可以存放不同环境的jdbc.properties等配置文件


    <profiles>
		<!-- 系统环境切换 dev为开发环境配置, test为测试环境配置,pro为生产环境配置 -->
		<profile>
			<id>dev</id>
			<properties>
				<env>resources_dev</env>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>


		<profile>
			<id>test</id>
			<properties>
				<env>resources_test</env>
			</properties>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
		</profile>


		<profile>
			<id>pro</id>
			<properties>
				<env>resources_pro</env>
			</properties>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
		</profile>
	</profiles>
	
2.需要在 pom.xml 的 <build></build> 节点中增加以下配置文件
    
    <!-- war包的名称,全局 -->
    <finalName>SnailCore</finalName>
    
    <!-- 指定项目中class对应的java目录 -->
    <sourceDirectory>src/main/java</sourceDirectory>
    
    <!-- 指定需要编译的资源文件目录 -->
    <resources>
        <!-- 指定通用的资源文件目录 -->
        <resource>
            <directory>${basedir}/src/main/resources/</directory>
            
            <!-- 指定通用的,编译的资源文件目录中所包含的文件类型 -->
            <includes>
                <include>*.*</include>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        
        <!-- 指定需要区分环境的,编译的资源文件目录中所包含的文件类型 -->
        <resource>
            <directory>${basedir}/src/main/${env}</directory>
            <includes>
                <include>*.*</include>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
    
    如果 mapping.xml,或者其他文件类型文件没有存放在resources通用目录下还需要配置一个resource标签使class输出目录中包含该类文件,配置方法请参考:
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.ttf</include>
            <include>**/*.properties</include>
        </includes>
    </resource>
    
 3.需要在 pom.xml 的 <build></build> 节点中增加以下配置文件
 
    <plugins>
        <!--maven打包插件 begin-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>utf8</encoding>
                <compilerArguments>
                    <verbose />
                    <!--Windows 系统请使用此配置-->
                    <!--<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>-->


                    <!--Mac 系统请使用此配置-->
                    <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
        	<groupId>org.apache.maven.plugins</groupId>
        	<artifactId>maven-surefire-plugin</artifactId>
        	<version>2.12.4</version>
        	<configuration>
        		<skip>true</skip>
        		<forkMode>once</forkMode>
        		<argLine>-Dfile.encoding=UTF-8</argLine>
        	</configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <!-- 此处指定需要打包项目的静态资源文件的目录,包括jsp,js,static,css,images等等 -->
                <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
                <failOnMissingWebXml>true</failOnMissingWebXml>
            </configuration>
            <version>2.2</version>
        </plugin>
        <!--maven打包插件 end-->
    </plugins>
    
  4.配置不同环境生成war包的配置项
  
    1). 将鼠标移动到idea左下角,出现窗口菜单
    2). 选择Maven Projects, 则在idea的右侧会出现 Maven Projects 面板
        在面板中的目录有
        [Profiles] --> 包含了[1]中所配置的环境切换开关
        [项目名称] --> [Lifecycle],[Plugins],[Dependencies],我们配置好了以后还会多出来一个[Run Configurations]
    3). 展开[Lifecycle]会看到我们将要用到的工具[clean],[validate],[compile],[test],[package],[verify],[install],[site],[deploy]
    4). 在[package]上点击右键,选择 Create '项目名称 [package...]'
    5). 在弹出的窗口中需要填写一下信息
        Name : 创建的配置名称,比如要创建生成开发环境的war包,可以写成 war_dev (这里可以自定义)
        在Parameter选项卡中需要填写一下信息
            Working Directory : 项目的路径 (这里一般会自动带出)
            Command line : clean package -Dmaven.test.skip-true (clean 清理项目,会删除老的编译后的文件; package 生成war包; -Dmaven.test.skip-true 不打包不变异测试代码)
            Profiles (separated with space) : dev  (这里填写的就是 profiles 中对应的需要生成环境的值 dev/test/pro)
        点击右下角确定完成即可
        生成 开发,测试,生产的war包配置项方法相同
    6). 在上一步配置好后,会在 2) 中的[Run Configurations] 中出现已经配置的 生成war包的配置项
       如果需要生成对应环境的war包双击该配置项即可完成,在控制台可以看到整个生成war包的日志,如果有报错请自行调整
      
  5.配置不同环境生成的编译配置项
  
    1). 将鼠标移动到idea左下角,出现窗口菜单
    2). 选择Maven Projects, 则在idea的右侧会出现 Maven Projects 面板
        在面板中的目录有
        [Profiles] --> 包含了(1)中所配置的环境切换开关
        [项目名称] --> [Lifecycle],[Plugins],[Dependencies],我们配置好了以后还会多出来一个[Run Configurations]
    3). 展开[Lifecycle]会看到我们将要用到的工具[clean],[validate],[compile],[test],[package],[verify],[install],[site],[deploy]
    4). 在[install]上点击右键,选择 Create '项目名称 [install...]'
    5). 在弹出的窗口中需要填写一下信息
        Name : 创建的配置名称,比如要创建编译开发环境的配置项,可以写成 build_dev (这里可以自定义)
        在Parameter选项卡中需要填写一下信息
            Working Directory : 项目的路径 (这里一般会自动带出)
            Command line : clean install -Dmaven.test.skip-true (clean 清理项目,会删除老的编译后的文件; install 编译项目; -Dmaven.test.skip-true 不打包不变异测试代码)
            Profiles (separated with space) : dev  (这里填写的就是 profiles 中对应的需要生成环境的值 dev/test/pro)
        点击右下角确定完成即可
        生成 开发,测试,生产的编译配置项方法相同
    6). 在上一步配置好后,会在 2) 中的[Run Configurations] 中出现已经配置的 编译项目的配置项
        如果需要编译对应环境文件双击该配置项即可完成,在控制台可以看到整个编译项目的日志,如果有报错请自行调整
        
  6.针对 [4] [5] 的说明: 为了避免编译或者生产war包出错,建议将所有外部jar包全部配置在 pom.xml 文件中
        在 pom.xml 配置文件中配置本地lib下的外部jar包方法如下:
        
            <!--以下是外部jar包路径-->
            <dependency>
                <!-- 这里填写war包的name -->
                <groupId>apache-ant-zip</groupId>
                <!-- 这里填写artifactId 如果不知道如何填写可与groupId相同 -->
                <artifactId>apache-ant-zip</artifactId>
                <!-- 这里填写version版本号 请对应自己lib下的jar包填写 -->
                <version>2.3</version>
                <!-- 这里必须这样写 -->
                <scope>system</scope>
                <!--
                    这里配置lib的目录 
                    ${lib.path}需要在 pom.xml的 <properties></properties> 中增加以下代码(<lib.path>这里是你自己的lib目录路径</lib.path>)
                    <lib.path>${basedir}/src/main/webapp/WEB-INF/lib</lib.path>
                -->
                <systemPath>${lib.path}/apache-ant-zip-2.3.jar</systemPath>
            </dependency>
                .
                .
                .
  
 7.配置不同环境的tomcat运行环境
 
    1). 创建tomcat(这里不做说明,不会请百度或google)
    2). 点击idea 右上角倒三角,选择[Edit Configurations...]
    3). 在弹出的窗口中需完成以下配置
        tomcat的基本配置(这里不做说明,不会请百度或google),name可以填写[project_dev] (这里可以自定义)
        在tomcat配置的[Server]选项卡中的最下方找到 [Before Launch] 面板并展开
        在展开的面板中点击"+"按钮在弹出的窗口中选择[Run Anther Configuration]
        在弹出的窗口中选择 [5] 中配置好的编译配置项 例如: build_dev
        
        创建 开发,测试,生产的创建tomcat配置项方法相同
        如果不需要本地测试某个环境的话,尽量不要使用这里配置tomcat,原因是这里配置的tomcat会重新编译项目,时间会比较长(建议使用基本的tomcat配置即可)

猜你喜欢

转载自blog.csdn.net/weixin_41639752/article/details/80349817