pom&maven
测试搜索xxx
会将src/main/resources下的配置文件打包
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<!--<includes>-->
<!--<include>**/*.xml</include>-->
<!--<include>*.properties</include>-->
<!--</includes>-->
<!--<filtering>true</filtering>-->
</resource>
</resources>
clean install -Dmaven.test.skip=true -Ptest ${env}占位符替换为-test
pom文件中
<profiles>
<profile>
<id>dev</id>
<properties>
<env>-dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>-test</env>
</properties>
</profile>
</profiles>
<import resource="classpath*:mapi${env}/my-dao.xml"/>
在target目录下 执行 java -jar myboot-0.0.1.jar pom中指定main及依赖
mvn工程构建(也可以用eclipse建)
mvn archetype:generate -DgroupId=com.yiibai -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn.everlook.myweb -DartifactId=myweb -DarchetypeArtifactId=maven-archetype-webapp
建maven-web工程时默认没有 main/java test/java buildpath中显示缺少这两个文件夹 收到添加即可
package打包 install打包安装到本地 deploy打包发布到本地及远程仓库
mvn 将jar包安装到本地maven库中
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=F:\study\repository\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.1.0.jar
mvn package -P profileid
mvn命令: mvn dependency:sources mvn dependency:resolve -Dclassifier=javadoc 命令使用方法:首先进入到相应的pom.xml目录中,然后执行以上命令: 第一个命令是尝试下载在pom.xml中依赖的文件的源代码。 第二个命令:是尝试下载对应的javadocs 或者eclipse中maven配置
发布:
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载
1、如果在发布时使用mvn deploy -P release 的命令,那么会自动使用0.1作为发布版本,那么根据maven处理snapshot和release的规则,由于版本号后不带-SNAPSHOT故当成是正式发布版本,会被发布到release仓库;
2、如果发布时使用mvn deploy命令,那么就会使用默认的版本号0.1-SNAPSHOT,此时maven会认为是快照版本,会自动发布到快照版本库。
<!--定义snapshots库和releases库的nexus地址--> <distributionManagement> <repository> <id>nexus-releases</id> <url> http://172.17.103.59:8081/nexus/content/repositories/releases/ </url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <url> http://172.17.103.59:8081/nexus/content/repositories/snapshots/ </url> </snapshotRepository> </distributionManagement>
配置完成后就可以通过mvn deploy进行发布了
发布:
<dependency>
<groupId>com.zhenai.dakehu</groupId>
<artifactId>dakehu-commons</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
打开CMD,将其定位到你要上传的jar包的文件夹,类似的输入以下命令:(注意红色的要一一对应)
mvn deploy:deploy-file -DgroupId=com.zhenai.dakehu -DartifactId=dakehu-commons -Dversion=1.0.0-SNAPSHOT -Dpacckaging=jar -Dfile=dakehu-commons-1.0.0-SNAPSHOT.jar -DrepositoryId=maven-snapshots -Durl=http://112.124.33.150:8081/repository/maven-snapshots/
<repositories>的配置,你可以在它下面添加多个<repository> ,每个<repository>都有它唯一的ID,一个描述性的name,以及最重要的,远程仓库的url。此外,<releases><enabled>true</enabled></releases>告诉Maven可以从这个仓库下载releases版本的构件,而<snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件
<pluginRepositories>,这是配置Maven从什么地方下载插件构件(Maven的所有实际行为都由其插件完成)。该元素的内部配置和<repository>完全一样
1,properties
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<profiles.dir>src\main\resources\props</profiles.dir>
</properties>
替换本文件中 ${profiles.dir}
2,profiles
定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果
(1) 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。(下面举例是这种方式)
(2) 针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。
(3) 全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<xurl>http://10.100.142.90:8080/x/</xurl>
<main.db.username>hardess_rcs</main.db.username>
<main.db.password>hardess_rcs_dev_test_201709</main.db.password>
<!-- 是否过滤单元测试 -->
<maven.test.skip>true</maven.test.skip>
src/main/resources 下配置文件中 ${main.db.url} 进行替换 包括其子目录下文件
....
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<profiles.dir>src/main/resources/props</profiles.dir>
</properties>
<build>
<filters>
<filter>${profiles.dir}\${env}\system-page-p.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<!-- 测试环境配置 -->
<id>uat</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>uat</env>
<web.port>10104</web.port>
<dubbo.cashier.group>uatcashier</dubbo.cashier.group>
<dubbo.run.timeout>1000000</dubbo.run.timeout>
把${profiles.dir}\${env}\system-page-p.properties 文件替换src/main/resources/下同名配置文件 包括其子目录下文件
另一种写法
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<!-- 设置默认激活这个配置 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
resources:描述工程中资源的位置 如果没有指定resources,目前认为自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文
件放到target里头的classes文件夹下的package下的文件夹里。如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准
<resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> <excludes>//打包项目中不包含以下资源 <exclude>profiles/**</exclude> <exclude>config/zbank/server-info.json</exclude> <exclude>log4j2/**</exclude> </excludes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources/profiles/${profile.name}</directory> <targetPath>config/zbank</targetPath>//把资源打包到该路径下 <includes> <include>server-info.json</include> </includes> <filtering>false</filtering> </resource>
plugins 引入插件
<build>
<plugins>
<!--compiler插件 windows平台默认使用GBK编码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<!--源码的Java版本-->
<source>1.7</source>
<!--运行环境的Java版本-->
<target>1.7</target>
<encoding>UTF8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<contextReloadable>false</contextReloadable>
<uriEncoding>UTF-8</uriEncoding>
<path>/</path>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>bmoapi-${project.version}-${profile.name}</warName>
</configuration>
</plugin>
</plugins>
</build>
maven-surefire-plugin 打包时跳过单元测试
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding><!-- 指定编码格式,否则在DOS下运行mvn命令时当发生文件资源copy时将使用系统默认使用GBK编码 -->
</configuration>
</plugin
在target目录下 执行 java -jar myboot-0.0.1.jar
<build>
<plugins>
<!--compiler插件 windows平台默认使用GBK编码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>cn.com.xmh.BusinessWebApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
settings.xml镜像使用默认mirrorOf规则=*, 所有的仓库都被镜像 , 不会再去其他私服上下载,!nexus避免默认从镜像中下载 <mirrors> <mirror> <id>gome</id> <name>gome</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> //<mirrorOf>central</mirrorOf> <mirrorOf>*,!nexus</mirrorOf> </mirror> </mirrors> <profiles> <profile> <id>gomePublicProfile</id> <repositories>//依赖库 <repository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.ds.gome.com.cn/nexus/content/groups/public</url> </repository> </repositories> <pluginRepositories>//插件库 <pluginRepository> <id>nexus</id> <name>Maven China Mirror</name> <url>http://maven.ds.gome.com.cn/nexus/content/groups/public</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>gomePublicProfile</activeProfile> </activeProfiles>

浙公网安备 33010602011771号