如何为开发和生产环境建立不同的配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为开发和生产环境建立不同的配置文件相关的知识,希望对你有一定的参考价值。

1. 什么 $your.configuration, 和spring的东西都差不多了, 配置写到脚本里去了,....这叫啥配置...
2. 调用ant....

还是根据我以前的思路:

src/main目录下原来有 java, resources, 我新建几个目录: resources-dev, resources-test, resources-prod.

resources --- 一些共享的配置文件, 一般不需要修改的
resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.

本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.

编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 我们利用maven的profile和build-helper-maven-plugin插件就可以实现.

<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources_dev</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<classifier>dev</classifier>
</configuration>
</execution>
</executions>
</plugin>

</plugins>
</build>
</profile>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources_test</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<classifier>test</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

(文章后面有简化版本)

自己根据实际的部署环境修改吧, 运行 mvn package -P test 就可以打包了.

反正很简单啦. 一大堆xml, 有用的没几句....太罗嗦了

另:目前开发用resin, intellij idea 9, 调试时webapp在开发目录webapp下就地开发, 所以我的maven脚本还有如下部分:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/**</warSourceExcludes>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
</plugins>
</build>

这部分是公用的, 当然dev时候也不用打包.... 所以........ 可以用于本机开发, 打包到test, production等环境.

总之部署上maven不如ant灵活, ant写一套脚本一般来说也很少修改了.... 想改特容易. maven想复制个目录都要想法....

______________________________________________
简化后的版本:

<properties>
<package.target>notexists</package.target>
</properties>

<profiles>
<profile>
<id>dev</id>
<properties>
<package.target>dev</package.target>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<package.target>test</package.target>
</properties>
</profile>
</profiles>

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources_$package.target</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/**</warSourceExcludes>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<classifier>$package.target</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
参考技术A src/main目录下原来有 java, resources, 新建几个目录: resources-dev, resources-test, resources-prod.
resources --- 一些共享的配置文件, 一般不需要修改的
resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.
本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.
编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 利用maven的profile和build-helper-maven-plugin插件就可以实现.
<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources_dev</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<classifier>dev</classifier>
</configuration>
</execution>
</executions>
</plugin>
自己根据实际的部署环境修改吧, 运行 mvn package -P test 就可以打包了.
另:目前开发用resin, intellij idea 9, 调试时webapp在开发目录webapp下就地开发, 所以我的maven脚本还有如下部分
</plugins>
</build>
</profile>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources_test</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<classifier>test</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
参考技术B 我以前的思路:
src/main目录下原来有 java, resources, 我新建几个目录: resources-dev, resources-test, resources-prod.
resources --- 一些共享的配置文件, 一般不需要修改的
resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.
本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.
编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 我们利用maven的profile和build-helper-maven-plugin插件就可以实现.本回答被提问者和网友采纳

如何为生产和开发环境 iOS 设置不同的证书和配置文件?

【中文标题】如何为生产和开发环境 iOS 设置不同的证书和配置文件?【英文标题】:How setup different certificates and provisioning profile for production and development environment iOS? 【发布时间】:2015-05-30 07:51:23 【问题描述】:

这可能是一个愚蠢的问题,但对于开发人员构建应用程序来说非常重要。

我只想问我们可以为 xcode 项目的开发和生产环境有条件地设置代码签名身份和配置文件吗?

因此,当我们为生产环境构建应用程序时,我们可以轻松更改条件并立即为生产环境构建应用程序。否则我们还需要做很多事情,比如更改代码签名身份和配置文件以及包名称。

那么是否可以应用这种条件,如果可以,那么如何应用?

我很想知道这是怎么发生的。

提前致谢。

【问题讨论】:

从命令行构建项目是可能的。只需要编写脚本并在终端中执行即可。 @kmithi 你的意思是写shell脚本并执行它?你能提供任何资源吗?这对我很有帮助。 【参考方案1】:

如果我理解正确,您也可以从 Xcode GUI 中进行操作:

    使用 Apple Developer Site 创建开发和生产配置文件。

    在您的目标设置中,转到Build Settings 并在搜索字段中输入Code Sign

    打开配置文件左侧的小箭头。您可以看到您可以配置调试您的开发配置文件和发布,您的生产(或 AdHoc)配置文件。

    转到左上角的方案菜单并选择Manage Scheme

    您可能只配置了一个方案,因此选择它(按一次)并按左下角的设置按钮。选择Duplicate

    为此方案命名(我建议使用 MyProjectRelease 之类的名称)并选择 Release 配置。

    现在,在构建项目之前,您要做的就是更改所需的方案。

【讨论】:

以上是关于如何为开发和生产环境建立不同的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

如何为不同的 API 链接配置 Flutter Flavor

怎么搭建的java开发,测试,生产环境的

如何为 .NET 中的不同环境使用不同的 .settings 文件?

如何为测试环境配置Play

Maven 构建配置文件

Maven学习(十四)-----Maven 构建配置文件