- 浏览: 2654875 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
首先简单介绍下 Maven 的 profile 是什么。对于人来说,profile 是指人的肖像,轮廓,比如论坛里每个人注册了帐号后,可以设置自己的 profile,放上照片,介绍等等。对于 Maven 来说又是怎样呢?整个项目定义好了项目对象模型(POM),就像论坛为每个人提供了默认的行为功能,如果我想改变我机器上的 POM 呢?这时就可以使用 profile。下面举个例子:
<profiles> <profile> <id>jdk16</id> <activation> <jdk>1.6</jdk> </activation> <modules> <module>simple-script</module> </modules> </profile> </profiles>
这个 profile 的意思是,当机器上的 JDK 为1.6的时候,构建 simple-script 这个子模块,如果是1.5或者1.4,那就不构建,这个 profile 是由环境自动激活的。
我们需要在合适的地方使用合适的 profile ,并且在合适的时候用合适的方式将其激活,你不能在构建服务器上激活非公共的 profile,你也不能要求开发人员写很复杂的命令来使用常规的 profile。因此这里介绍一下几种 profile 的激活方式。
1. 根据环境自动激活。
如前一个例子,当 JDK 为1.6的时候,Maven 就会自动构建 simple-script 模块。除了 JDK 之外,我们还可以根据操作系统参数和 Maven 属性等来自动激活 profile,如:
<profile> <id>dev</id> <activation> <activeByDefault>false</activeByDefault> <jdk>1.5</jdk> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> <property> <name>mavenVersion</name> <value>2.0.5</value> </property> <file> <exists>file2.properties</exists> <missing>file1.properties</missing> </file> </activation> ... </profile>
2. 通过命令行参数激活。
这是最直接和最简单的方式,比如你定义了一个名为 myProfile 的 profile,你只需要在命令行输入 mvn clean install -Pmyprofile 就能将其激活,这种方式的好处很明显,但是有一个很大的弊端,当 profile 比较多的时候,在命令行输入这写 -P 参数会让人觉得厌烦,所以,如果你一直用这种方式,觉得厌烦了,可以考虑使用其它自动激活的方式。
3. 配置默认自动激活。
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
<profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile>
在一个特殊的环境下,配置默认自动激活的 profile 覆盖默认的 POM 配置,非常简单有效。
4. 配置 settings.xml 文件 profile 激活。
settings.xml 文件可以在 ~/.m2 目录下,为某个用户的自定义行为服务,也可以在 M2_HOME/conf 目录下,为整台机器的所有用户服务。而前者的配置会覆盖后者。同理,由 settings.xml 激活的 profile 意在为用户或者整个机器提供特定环境配置,比如,你可以在某台机器上配置一个指向本地数据库 URL 的 profile,然后使用该机器的 settings.xml 激活它。激活方式如下:
<settings> ... <activeProfiles> <activeProfile>local_db</activeProfile> </activeProfiles> </settings>
Maven 提供的 profile 功能非常强大和灵活,用得好的话,可以有效的隔离很多特殊的配置,使得整个项目能在不同环境中顺利的构建。但是,强大和灵活带来得问题是相对难掌握,希望本文能对 Maven 使用者有帮助。
发表评论
-
maven 插件开发
2019-01-16 14:57 4841. 注意maven插件的命名规范 一般来说,我们会将自 ... -
maven 常用命令
2017-02-10 16:14 431mvn clean install --projec ... -
maven-dependency-tree 插件
2016-08-22 20:02 1092mvn 秘籍 mvn dependency:tree ... -
使用maven-assembly-plugin打包
2014-04-17 12:22 54373有时候希望能把部署环境build在project,这样部属 ... -
使用maven的assembly进行打包
2013-01-08 11:29 975maven的标准目录复杂,且不能解决发布和开发环境不统一的问题 ... -
mvn deploy
2012-10-09 18:29 960对于内部的二方库的发布,需要同步发布到仓库这是可以通过mvn ... -
使用Nexus配置Maven私有仓库
2012-07-27 15:46 169691. 下载Nexus 下载地址:http://nexu ...
相关推荐
使用maven profile指定配置文件打包适用多环境的方法 Maven Profile是Maven提供的一种配置管理机制,允许开发者在不同的环境中使用不同的配置文件。通过使用Maven Profile,可以轻松地在开发、测试、预演和生产等...
例如,开发环境和生产环境的数据库连接配置可以分别定义在不同的profile中。 7. **设置Maven属性**:通过`-D`选项可以传递系统属性,如`mvn -DskipTests`将跳过测试。 **总结** 掌握Maven的命令行操作是每个Java...
除了直接在pom.xml中配置外,还可以通过编写Maven的profile或在settings.xml文件中配置全局插件,以便于项目间的复用和管理。 值得注意的是,YUI Compressor虽然强大,但它可能无法处理某些复杂的JavaScript语法,...
1. 配置Maven:批处理文件可能会引用一个名为`settings.xml`的配置文件,这个文件位于`~/.m2/`目录下(对于Windows用户通常是 `%USERPROFILE%\.m2\`)。`settings.xml`用于配置Maven的行为,比如定义镜像源、用户...
1. mvn-examples-1.0 <module>ch03-simple <module>ch04-custom <module>ch05-simple-web <module>ch06-multi <module>ch07-multi-spring <module>ch08-optimize <module>ch09-pom <module>ch10-lifecycle ...
Maven作为Java项目管理的强大工具,提供了Profile功能来解决这个问题。Profile允许我们在一个项目中定义多个构建配置,每个配置对应一个特定的环境。下面将详细讲解如何使用Maven Profile实现多环境构建。 首先,让...
例如,如果我们想构建开发环境的包,可以在命令行运行 `mvn package -Pdev`。 对于描述中的"WEB-INF"和"META-INF"目录,这两个是Java Web应用的标准目录结构的一部分。`WEB-INF`目录通常包含Web应用的类文件、配置...
4. **验证Maven安装**:完成上述步骤后,打开终端或命令提示符,输入`mvn -v`(或`mvn --version`)。如果正确配置了环境变量,将会显示Maven的版本信息,表明安装成功。 5. **配置Maven设置**:Maven的默认配置...
在每个profile的配置文件夹下(如`src/main/resources/config/profile-name/`)放置对应的`applicationContext.xml`,并激活相应的profile。 除了以上方法,还应注意一些最佳实践和注意事项: - **避免过度依赖XML...
最近使用mac系统后,每次在~/.bash_profile 配置了mvn 等环境变量后,使用 source后 环境变量生效,但是当终端退出后,环境变量就失效。 zsh: command not found: mvn mac 每次启动终端都会加载当前用户下的.zshrc...
当执行`mvn package`命令时,Maven会根据激活的profile(默认是`dev`)来过滤资源,从而打包进对应环境的配置文件。 在实际项目中,我们通常还会利用Spring Boot的`spring.profiles.active`属性来指定当前运行环境...
在使用Maven进行项目构建时,尤其是在处理大型项目或执行资源密集型任务(如`mvn site`)时,经常会遇到Java堆空间溢出的问题。这类问题通常是由于Maven运行所需的内存超过了系统分配给它的默认内存限制所致。本文将...
执行`mvn package`命令后,Maven会自动完成编译、测试和打包整个流程,生成的可执行文件会保存在target目录下。 总结起来,`MavenHelloWorld`项目展示了Maven的核心价值:通过统一的项目结构和配置管理,简化了项目...
通过深入研究这些示例,你不仅可以掌握Maven的基础用法,还能了解到高级特性,例如自定义插件、profile切换、远程仓库的使用,以及如何利用Maven进行持续集成。这将对提升你的Java开发效率,特别是在大型团队协作...
3. 对于Unix/Linux系统,编辑~/.bashrc或~/.bash_profile文件,添加以下行: ``` export M2_HOME=/path/to/apache-maven-3.6.3 export PATH=$PATH:$M2_HOME/bin ``` 然后运行 `source ~/.bashrc` 或 `source ~/...
- **profile**:Profile允许根据不同的环境(如开发、测试、生产)定制不同的配置。 - **远程仓库**:除了默认的中央仓库外,还可以配置私有仓库,用于存放公司内部的依赖。 ### 5. Maven 3 的持续集成与部署 - **...
中文乱码问题通常发生在Maven执行`mvn test`命令后生成的TestNG测试报告中。这可能是由于编码设置不正确,导致Maven在读取或写入文件时未能正确处理中文字符。解决这个问题,我们需要关注以下几个关键点: 1. **...
找到Maven的安装路径,通常是在 `/usr/share/maven/bin`,然后编辑`~/.bashrc`或`~/.bash_profile`(取决于你的Ubuntu版本): ```bash nano ~/.bashrc ``` 在文件末尾添加以下行,替换`/usr/share/maven/bin`为...
输入mvn -v查看Maven是否安装成功 如果遇到以下异常,重新编辑bash_profile文件,增加export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home后,并重新运行$ source ~/.bash_profile...
`settings.xml`是Maven的核心配置文件之一,它位于用户的Maven配置目录下,通常在`~/.m2/`(对于Unix系统)或`%USERPROFILE%\\.m2\`(对于Windows系统)。这个文件包含了Maven运行时的个性化设置,包括本地仓库路径...