精华内容
下载资源
问答
  • WAR包配置文件分离

    千次阅读 2017-12-07 15:39:28
    QQ技术交流群:129518033   Java开发中经常打WAR的人会遇到一个问题,每次都得...下面介绍一下如何将配置文件分离出来,这样每次打WAR包的时候就可以直接将WAR部署就好了,一般不需要关心配置文件的问题。   ...

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:129518033

     

    Java开发中经常打WAR的人会遇到一个问题,每次都得根据部署电脑的IP、路径等信息修改工程中的配置文件。

    但是每次都这样还是非常烦人的。

    下面介绍一下如何将配置文件分离出来,这样每次打WAR包的时候就可以直接将WAR部署就好了,一般不需要关心配置文件的问题。

     

     

    1.数据库配置文件的分离

    jdbc.properties是数据库的配置文件,其目录为config下。

     

    1.1 设置配置文件目录

    找到WebRoot下WEB-INF下的web.xml文件,加入如下内容

     

    <!-- 用于配置文件分离 -->
      <context-param>    
      <param-name>customConfigDir</param-name>  
      <param-value>c:\webConfig</param-value>  
      </context-param>

     

     

         这样就可以设置配置文件的主目录

     

     

    1.2 spring-beans.xml中配置jdbc.properties路径

    找到propertyConfigurer标签下,修改value

    <beans:bean id="propertyConfigurer"
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<beans:property name="locations">
    			<beans:list>
    				<!-- <beans:value>classpath:jdbc.properties</beans:value> -->
    				<beans:value>file:/${customConfigDir}/${projectName}/jdbc.properties</beans:value>
    			</beans:list>
    		</beans:property>
    	</beans:bean>

     

    其中${projectName}为工程名称的配置,位于web.xml。

    该参数主要用于区分不同工程的配置文件。

    前面加的file:/,不然路径不正确。

     

    2.其他配置文件的分离

    我们这里还用到一个其他的配置文件config.xml。

    <?xml version="1.0" encoding="UTF-8"?>
    	<!-- 图片地址 -->
    	<image-copy-path>D:\ftp\suppliesTypePic</image-copy-path>
    </config>

    例如,我们这里配置了一个图片的地址。

    config.xml在java代码中需要调用。

    String configPath = event.getServletContext().getInitParameter("customConfigDir")
            		+"\\"
            		+event.getServletContext().getInitParameter("projectName")
                    + "\\config.xml";
            XMLUtil.parserXml(configPath);


    主要是通过getServletContext来调用xml中的参数

     

    至此,我们就可以将配置文件与WAR分离出来,极大的方便了部署工作。

     

    觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!


     如需转载请标明出处:http://blog.csdn.net/itas109 

     

     

    QQ技术交流群:12951803

     

     

     

    展开全文
  • WAR包配置文件分离(二)

    千次阅读 2019-01-24 16:13:17
    Java开发中经常打WAR的人会遇到一个问题,每次都得根据部署电脑的IP、路径等信息修改工程中...下面介绍一下如何将配置文件分离出来,这样每次打WAR包的时候就可以直接将WAR部署就好了,一般不需要关心配置文件的问题。

    WAR包与配置文件分离(二)


    如需转载请标明出处:http://blog.csdn.net/itas109
    QQ技术交流群:129518033


    环境:
    SpringMVC
    Maven:3.3.9

    相关阅读:
    WAR包与配置文件分离


    前言

    Java开发中经常打WAR的人会遇到一个问题,每次都得根据部署电脑的IP、路径等信息修改工程中的配置文件。但是每次都这样还是非常烦人的。

    下面介绍一下如何将配置文件分离出来,这样每次打WAR包的时候就可以直接将WAR部署就好了,一般不需要关心配置文件的问题。

    1.配置pom.xml基础路径

    由于我们使用maven,所以这里以pom.xml为根目录进行配置,其他配置采用pom.xml中的参数。

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...                 
        <!--  自定义属性 -->
        <properties>
            <!--  配置文件输出路径 -->
            <customConfigDir>c:\\webConfig</customConfigDir>
        </properties>
        ...
     </project>
    

    2.设置pom.xml参数其他配置文件可用

    filtering标签可以设置pom.xml参数其他配置文件可用
    

    这里以resources为例,设置*.xml和*.properties可以使用pom.xml参数

        <build>
            <!-- 项目资源清单(可以配置多个项目资源) -->
            <resources>
                <resource>
                    <!-- 资源目录(编译时会将指定资源目录中的内容复制到输出目录) -->
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <!-- 是否开启资源过滤(需要引入maven-resources-plugin插件)
                    |   true:将用过滤资源(filters标签)中的内容 替换 资源中相应的占位符(${Xxxx})内容
                    |   false:不做过滤替换操作 -->
                    <filtering>true</filtering>
                </resource>
                ...
    </build>
    

    3.其他配置文件使用pom.xml的变量

    这里以src\main\resources\spring-config.xml文件为例

       <!--属性配置文件引入 -->
        <context:property-placeholder location="file:/${customConfigDir}/${project.artifactId}/config/jdbc.properties"/>
        <!--引入其他文件 -->
        <import resource="file:/${customConfigDir}/${project.artifactId}/config/spring-mybatis.xml"/>
    

    4.指定配置文件的输出

    上面我们在spring-config.xml中配置了相应的路径,但是工程并没有生成对应路径的文件

    targetPath标签可以指定输出目录
    
    <build>
            <!-- 项目资源清单(可以配置多个项目资源) -->
            <resources>  
                <resource>
                    <!-- 资源目录(编译时会将指定资源目录中的内容复制到输出目录) -->
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/jdbc.properties</include>
                        <include>**/spring-mybatis.xml</include>
                        <include>**/spring-quartz.xml</include>
                        <include>**/spring-shiro.xml</include>
                        <include>**/*.lic</include>
                    </includes>
                    <!-- 输出目录(默认为${build.outputDirectory},即target/classes) -->
                    <targetPath>${customConfigDir}\${project.artifactId}\config\</targetPath>
                    <!-- 是否开启资源过滤(需要引入maven-resources-plugin插件)
                    |   true:将用过滤资源(filters标签)中的内容 替换 资源中相应的占位符(${Xxxx})内容
                    |   false:不做过滤替换操作 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
            ...
    </build>
    

    Reference:
    NULL
    觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!
    在这里插入图片描述
    如需转载请标明出处:http://blog.csdn.net/itas109
    QQ技术交流群:129518033

    展开全文
  • IDEA打war包时如何修改war包名 1.创建war配置文件 2.修改 这一步是否有必要不确定,反正改了不会出错。 3.修改war包名 4.打包

    IDEA打war包时如何修改war包名

    1.创建war配置文件
    在这里插入图片描述
    2.修改
    这一步是否有必要不确定,反正改了不会出错。
    在这里插入图片描述
    3.修改war包名
    在这里插入图片描述
    4.打包
    在这里插入图片描述

    展开全文
  • 我的项目使用场景起因是: 在同一台机器上起了两个tomcat实例, 每个项目的日志文件打印路径要配成不同, 如果每次打包手动修改打印日志的路径太费时费力, 所以考虑把配置文件每个tomcat放一份, 启动时自动读取当前...

    1. springboot支持动态的读取文件,扩展接口:org.springframework.boot.env.EnvironmentPostProcessor

    我的项目使用场景起因是: 在同一台机器上起了两个tomcat实例, 每个项目的日志文件打印路径要配成不同, 如果每次打包手动修改打印日志的路径太费时费力, 所以考虑把配置文件每个tomcat放一份, 启动时自动读取当前tomcat文件下的配置就好.

    2. 我这里的自定义配置文件存放路径: tomcat的conf文件夹下面

    3. application.properties配置文件内容(我这里不同tomcat配置参数值不同)

    spring.profiles.active=test
    4. 定义MyEnvironmentPostProcessor实现EnvironmentPostProcessor接口

    package com.hlz.web.common.config;
     
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.env.EnvironmentPostProcessor;
    import org.springframework.core.env.ConfigurableEnvironment;
    import org.springframework.core.env.MutablePropertySources;
    import org.springframework.core.env.PropertiesPropertySource;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.core.io.support.PropertiesLoaderUtils;
     
    import javax.servlet.ServletContextEvent;
    import java.io.File;
    import java.io.IOException;
    import java.util.Properties;
     
    public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
     
     
        @Override
        public void postProcessEnvironment(ConfigurableEnvironment configurableEnvironment, SpringApplication application) {
            //tomcat路径
            String property = System.getProperty("catalina.home");
            System.out.println("catalinahome:"+property);
     
            String path =property+File.separator+"conf"+File.separator+"myspringboot.properties";
            File file = new File(path);
            System.out.println("Loading local settings from : "+path);
     
            if (file.exists()) {
                MutablePropertySources propertySources = configurableEnvironment.getPropertySources();
                Properties properties = loadProperties(file);
                System.out.println(properties.toString());
                propertySources.addFirst(new PropertiesPropertySource("Config", properties));
            }
        }
     
        private Properties loadProperties(File f) {
            FileSystemResource resource = new FileSystemResource(f);
            try {
                return PropertiesLoaderUtils.loadProperties(resource);
            } catch (IOException ex) {
                throw new IllegalStateException("Failed to load local settings from " + f.getAbsolutePath(), ex);
            }
        }
    }
     
    5. 在classpath定义一个META-INF文件夹然后在其下面先建spring.factories文件,在其中指定:

    org.springframework.boot.env.EnvironmentPostProcessor=com.hlz.web.common.config.MyEnvironmentPostProcessor

     

     

    启动工程


    6. 如果同一个参数, application.yml中有定义, 外部配置文件也有定义, 以哪一个为准呢,

    //以配置文件为准 
    propertySources.addFirst(new PropertiesPropertySource("Config", properties));
     
    //以application.yml中的文件为准
     propertySources.addLast(new PropertiesPropertySource("Config", properties));
    7.一些官网的关于EnvironmentPostProcessor的说明

    Allows for customization of the application's Environment prior to the application context being refreshed.
     
    EnvironmentPostProcessor implementations have to be registered in META-INF/spring.factories, using the fully qualified name of this class as the key.
     
    EnvironmentPostProcessor processors are encouraged to detect whether Spring's Ordered interface has been implemented or if the @Order annotation is present and to sort instances accordingly if so prior to invocation.
     

     

    升级版的属性读取解析器:

    package com.kiiik.config;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.env.EnvironmentPostProcessor;
    import org.springframework.core.env.ConfigurableEnvironment;
    import org.springframework.core.env.MutablePropertySources;
    import org.springframework.core.env.PropertiesPropertySource;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.core.io.support.PropertiesLoaderUtils;
    import org.springframework.util.StringUtils;
    
    public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
    
    	/* -Dprotect.config.dir=d:/data/test
    	 * -Dspring.config.location=d:/data/test
    	 * */
    	String baseFileName= "application.properties";
    	
    	@Override
    	public void postProcessEnvironment(ConfigurableEnvironment configurableEnvironment, SpringApplication application) {
    		String selfDefinedDir = System.getProperty("project.config.dir");
    		String springConfigDir= System.getProperty("protect.config.dir");
    		String tomcatHome = null;
    		String configFileDir="";
    		if(!StringUtils.isEmpty(springConfigDir))//启动参数获取目录,只要指定 肯定有。
    		{
    			configFileDir = springConfigDir;//优先级最高100
    		}else{
    			if(!StringUtils.isEmpty(selfDefinedDir)){//优先级 99
    				configFileDir = selfDefinedDir;
    			}
    			
    		}
    		if(configFileDir == null){//没有自定义目录
    			// tomcat路径
    			if(!StringUtils.isEmpty(System.getProperty("catalina.home"))){
    				tomcatHome = System.getProperty("catalina.home");//优先级98
    				String projectName = System.getProperty("project.name");
    				if(StringUtils.isEmpty(projectName))
    					try {
    						throw new Exception("工程名不能为空,请添加-Dproject.name属性");
    					} catch (Exception e) {
    						e.printStackTrace();
    					}
    				String relativePath = File.separator + projectName + File.separator ;
    				configFileDir = tomcatHome+relativePath;
    			}else{//tomcat也没有定义默认目录,读取工程目录同级的配置文件
    				String projectName = System.getProperty("project.name");
    				if(StringUtils.isEmpty(projectName))
    					try {
    						throw new Exception("工程名不能为空,请添加-Dproject.name属性");
    					} catch (Exception e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				//读取应用同级目录下的工程名目录下的配置文件
    				configFileDir = System.getProperty("user.dir") + File.separator+projectName+ File.separator;//读取应用同级目录下的工程名目录下的配置文件
    				File[] proDirfiles = new File(configFileDir).listFiles();
    				if(proDirfiles.length==0){//优先级97
    					//classpath目录下配置文件
    					File clsPath;
    					try {
    						clsPath = org.springframework.util.ResourceUtils.getFile("classpath:");
    						configFileDir = clsPath.getAbsolutePath()+ File.separator;
    					} catch (FileNotFoundException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}//优先级96
    				}
    			}
    		}
    		if(!configFileDir.endsWith("/")&&!configFileDir.endsWith("\\")){
    			configFileDir = configFileDir.concat(File.separator);
    		}
    		System.out.println("configFileDir:" + configFileDir);
    		MutablePropertySources propertySources = configurableEnvironment.getPropertySources();
    		Properties appProperties = loadProperties(new File(configFileDir+baseFileName));
    		propertySources.addFirst(new PropertiesPropertySource("Config", appProperties));
    		File[] files = new File(configFileDir).listFiles();
    		if(files.length ==0)
    			try {
    				throw new Exception("没有发现配置文件!");
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		for(int i=0;i<files.length;i++){
    			if(files[i].getName().contains("properties")&&!baseFileName.equals(files[i].getName())){
    				System.out.println("load setting file :"+files[i]);
    				propertySources.addFirst(new PropertiesPropertySource(files[i].getName(), loadProperties(new File(configFileDir+files[i].getName()))));
    			}
    		}
    	}
    	private Properties loadProperties(File f) {
    		FileSystemResource resource = new FileSystemResource(f);
    		try {
    			return PropertiesLoaderUtils.loadProperties(resource);
    		} catch (IOException ex) {
    			throw new IllegalStateException("Failed to load local settings from " + f.getAbsolutePath(), ex);
    		}
    	}
    }
    

     

    展开全文
  • Tomcat读取war包配置文件

    千次阅读 2019-03-26 22:19:32
    项目部署时,因为开发环境、测试环境、生产环境的配置各不相同,所以不能使用同一套配置文件,因此需要在部署服务时将配置文件放置到一个单独的文件夹中,这样就需要在Tomcat中进行配置 以windows系统启动tomcat为...
  • 修改war包内容

    千次阅读 2017-07-04 11:48:23
    war包
  • 应用部署war包配置文件分离 部署主机路径规划以及tomcat中间件改造 1、新建存放war包路径/appsystems/apps 将war包放置其中 2、新建存放配置文件路径/appsystems/config 将应用程序的配置文件放置其中; 3、...
  • 如果Linux系统中,有很多tomcat项目,上线新项目后,需要修改一些端口号,项目才可以启动起来, 具体,只需要修改:server.xml <Server port="8057" shutdown="SHUTDOWN”> //改为其他 <Connector ...
  • 使用Maven插件将依赖包 jar包 war包配置文件输出到指定目录
  • 一: 修改springboot启动类代码,...System.out.println("配置文件路径地址:"+configDir); Properties properties = new Properties(); try { properties.load(new FileInputStream(new File(configDir + "\\applica
  • 项目配置可视化可维护,web项目的配置文件需要动态变更,不能直接写死在war中,就需要我们实现war包可以读取外部的配置文件
  • war 配置文件分离

    千次阅读 2016-06-23 09:38:06
    最近项目采用SCM统一管理的方式,通过hudson自由打包给测试和IDC运维人员,但是存在一个问题,就是我们的配置文件一直是存在于classpath下面的,而当程序包(hudson通过Maven自动打出war包)打给测试和IDC人员后,...
  • B.jar中有一些系统相关的配置文件,如数据库的配置。   如果我们需要马上修改该应用的数据库配置,常规的做法在IDE中是去修改B中的内容,然后重新build好后将A.war上传到我们的服务器上并重启Tomcat。...
  • IDEA修改项目war包名称

    千次阅读 2019-08-28 12:28:24
    现在IDEA在生成war包的时候名字特别长(如下图所示),看着很不舒服,在生成的时候总想把名字改一下,下面分享一下,怎么修改war包名称。 1、在POM文件中修改生成包的名称: 代码: <packaging>war</...
  • Linux下修改war包下的文件

    千次阅读 2010-04-15 05:52:45
    1.将 .war 文件复制到临时目录。   cp /usr/share/lib/imq/imqhttps.war /tmp (Solaris) cp /opt/sun/mq/share/lib/imqhttps.war /tmp (Linux) cp IMQ_HOME/lib/imqhttps.war /tmp (Windows) 2...
  • 此篇文章的真正目的应该是关于war包运行在独立tomcat下时,应如何在war包外部配置application.properties,以达到每次更新war包而不用更新配置文件的目的。 百度搜素SpringBoot配置文件,基本上会得到如下信息: ...
  • spring访问war包外的配置文件

    千次阅读 2015-03-03 15:26:08
    因为生产和开发测试的环境不同,所以有时候需要把properties文件放在外方便修改配置。 这里用的是spring的PropertyPlaceholderConfigurer来读取properties属性。 file:${user.dir}/config/...
  • 修改后的文件写回war包

    千次阅读 2015-03-12 17:26:01
    有时候,你解压了war包修改了其中某些文件,然后想把这些修改写回war包,可以用以下命令: jar uvf a.war b.xml a.war是你的war包, b.xml 是你修改文件
  • tomcat7 修改war包默认部署路径

    千次阅读 2017-06-30 16:44:33
    tomcat7 修改war包默认部署路径
  • 记tomcat部署war包配置

    千次阅读 2019-09-06 21:54:02
    记tomcat部署war包配置war包放入Tomcat中 将war包放到Tomcat目录下的webapps文件夹中;(大多数人的选择)如果放在此文件内,可能会导致项目路径出现问题。可以在Tomcat目录下自定义一个文件夹 这里是自定义...
  • 情况是这样公司产品要拿去演示的时候 ,万事俱备,只欠东风啊。好的!那么我们要把东风布置好,于是就在客户现场的主机上...情况是这样的因为在部署Spring boot jar应用的时候,由于线上与测试环境的配置不同(例如数...
  • 前言 &amp;amp;背景介绍 在某个java-web项目中,需要根据maven的profile的配置进行properties文件...profiles下面有三个环境,分别是dev,test,product,而conf的配置文件都是跟随开发人员选择的环境【dev,te...
  • ①下载apache-tomcat-8.5.37-windows-x64.zip,配置环境变量JAVA_HOME=tomcat安装路径/bin,再添加class_path =%TOMCAT_HOME%\BIN; ②启动cmd.exe, 进入tomcat 安装文件下的 bin目录下,例如我这里的安装位置:D:\...
  • 1: 使用pom文件配置 springBoot启动类要改动一下 package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import...
  • Linux修改war包中文件

    千次阅读 2018-10-29 14:13:00
    1、提取 .war 文件的内容 ...2、修改文件 3、重新载入.war文件内容 jar uvf imqhttps.war WEB-INF/classes/test.properties 转载于:https://www.cnblogs.com/zhao-shan/p/9870379.html...
  • 修改war包中数据库配置信息

    千次阅读 2019-10-28 14:46:06
    1、将war包解压缩 2、创建目录,层级与.java文件包名一致,把.class文件移到该目录下(如果路径名与包名不一致,转dex操作会报错) 3、用jdk/bin目录下的jar命令, jar cvf 生成.jar class目录或class文件,得到jar...
  • 关于maven项目配置打包主要是在pom.xml文件中...packaging指定打包文件war类型需要引入maven打包的依赖 org.apache.maven.plugins maven-war-plugin 3.0.0 指定类型如下: war 项目打包如下:
  • Spring boot jar项目修改war包项目

    千次阅读 2018-02-09 15:56:47
    spring boot 项目,由jar项目修改war项目的相关修改配置

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,073
精华内容 29,629
关键字:

修改war包配置文件