maven学习之路三
我们在写代码的时候,有些项目会有重复代码,或者是重复项目结构,这样我们就可以用maven 生成一个项目的基本骨架,就像我之前介绍的哪个logindemo一样继承了webApp-achetype一样。我们也可以生成我们自己的项目骨架。
准备下我们的项目骨架结构:看图:
看下我这边的已有的代码:
我的这个程序是一个普通http接口。然后往往在公司会有很多这样的接口,然后每个接口都去实现同样的一份代码程序会感觉很费时间,包括拷贝代码建立项目目录等,都会很花费时间的,通用的代码可以做成jar 被依赖继承,但是那些不通用的地方就需要自己实现了,但是自己实现的项目结构往往是一样的,这样就可以用到这个骨架了。
来看下我这pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nnk.template</groupId>
<artifactId>template</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>XLTDRecharge Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.2.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<distributionManagement>
<repository>
<id>nnk-releases</id>
<name>NNK Releases Repository</name>
<url>${repositories.releases.url}</url>
</repository>
<snapshotRepository>
<id>nnk-snapshots</id>
<name>NNK Snapshots Repository</name>
<url>${repositories.snapshots.url}</url>
</snapshotRepository>
</distributionManagement>
<properties>
<java.version>1.6</java.version>
<start-class>com.nnk.template.recharge.Main</start-class>
<main.basedir>${basedir}/../..</main.basedir>
<m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
<httpclient.version>4.4.1</httpclient.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>log4j-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>org.apache.tomcat.embed</groupId>-->
<!--<artifactId>tomcat-embed-jasper</artifactId>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>javax.servlet</groupId>-->
<!--<artifactId>jstl</artifactId>-->
<!--</dependency>-->
<!--httpClient dependency start-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.jvnet.hudson.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1-hudson-3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>fluent-hc</artifactId>
<version>${httpclient.version}</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
<exclusions>
<exclusion>
<artifactId>commons-codec</artifactId>
<groupId>commons-codec</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${httpclient.version}</version>
</dependency>
<!--<dependency>-->
<!--<groupId>commons-codec</groupId>-->
<!--<artifactId>commons-codec</artifactId>-->
<!--<version>1.6</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.nnk.base</groupId>
<artifactId>msgsrv-tools</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.nnk.transport</groupId>
<artifactId>interface-extern-spring</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.nnk.base</groupId>
<artifactId>msgsrv-client</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<finalName>LMRecharge</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>GBK</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>boot</classifier>
</configuration>
</plugin>
<!--生成可执行JAR包命令 maven-jar-plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>interface-extern-spring</id>
<goals><goal>jar</goal></goals>
<phase>package</phase>
<configuration>
<excludes>
<exclude>**/src/test/resource/**</exclude>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
<configuration>
<excludes>
<exclude>src/main/resources</exclude>
<exclude>src/test/resource</exclude>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
这里面别的我就不介绍了,主要讲下这段配置
<distributionManagement>
<repository>
<id>nnk-releases</id>
<name>NNK Releases Repository</name>
<url>${repositories.releases.url}</url>
</repository>
<snapshotRepository>
<id>nnk-snapshots</id>
<name>NNK Snapshots Repository</name>
<url>${repositories.snapshots.url}</url>
</snapshotRepository>
</distributionManagement>
这里主要是deploy和install用到个人私服仓库,这里会指定你上传到哪里的url 。我的url在maven 配置settings文件里面配置了,所以这里只要用${引用就可以了};
如果没有settings.xml中没有配置就需要这样配置了:
<repositories>
<repository>
<id>local-nexus</id>
<name>private repository nexus</name>
<url>http://xxx:8081/nexus/content/groups/public/</url>
<releases>
</releases>
<snapshots>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local-nexus</id>
<name>private plugin nexus</name>
<url>http://xxx:8081/nexus/content/groups/public/</url>
<releases>
</releases>
<snapshots>
</snapshots>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<repository>
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://xxx:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://xxx:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
step 2 :接下来就是生成这个项目骨架了
- cmd到项目目录,mvn clean,然后 mvn archetype:create-from-project
- 成功之后cd到target/generated-sources/archetype, mvn clean compile
然后查看下这个目录下有什么东西
3.然后检查下target/generated-sources/archetype这个目录下这pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nnk.template</groupId>
<artifactId>template-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<name>template-archetype</name>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>2.4</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<description>Spring Boot Starter Parent</description>
<url>http://maven.apache.org</url>
<developers>
<developer>
<id>pwebb</id>
<name>Phillip Webb</name>
<email>pwebb at gopivotal.com</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>http://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
<developer>
<id>dsyer</id>
<name>Dave Syer</name>
<email>dsyer at gopivotal.com</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>http://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
<scm>
<url>https://github.com/spring-projects/spring-boot/spring-boot-starter-parent/template</url>
</scm>
</project>
如果此时mvn deploy 的化会出现Error 如下图
并没有下面这个:
<distributionManagement>
<repository>
<id>nnk-releases</id>
<name>NNK Releases Repository</name>
<url>${repositories.releases.url}</url>
</repository>
<snapshotRepository>
<id>nnk-snapshots</id>
<name>NNK Snapshots Repository</name>
<url>${repositories.snapshots.url}</url>
</snapshotRepository>
</distributionManagement>
这时就需要在pom.xml里面加上这段:
完整的应该是:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nnk.template</groupId>
<artifactId>template-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<name>template-archetype</name>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>2.4</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<description>Spring Boot Starter Parent</description>
<url>http://maven.apache.org</url>
<developers>
<developer>
<id>pwebb</id>
<name>Phillip Webb</name>
<email>pwebb at gopivotal.com</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>http://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
<developer>
<id>dsyer</id>
<name>Dave Syer</name>
<email>dsyer at gopivotal.com</email>
<organization>Pivotal Software, Inc.</organization>
<organizationUrl>http://www.spring.io</organizationUrl>
<roles>
<role>Project lead</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
<distributionManagement>
<repository>
<id>nnk-releases</id>
<name>NNK Releases Repository</name>
<url>${repositories.releases.url}</url>
</repository>
<snapshotRepository>
<id>nnk-snapshots</id>
<name>NNK Snapshots Repository</name>
<url>${repositories.snapshots.url}</url>
</snapshotRepository>
</distributionManagement>
<scm>
<url>https://github.com/spring-projects/spring-boot/spring-boot-starter-parent/template</url>
</scm>
</project>
然后再 mvn deploy 之后就把这个骨架上传到我们的私服仓库了。
step 3:怎么使用这个骨架
我新建一个项目:
点击ok 然后:
之后的步骤就不多介绍了和前面logindemo的步骤是一样的。
最终生成的项目结构就是这样子的:
这样我们的项目结构骨架就是这样生成了,这样只需要在项目骨架上面做开发了,是不是会爽很多,
有什么不懂得地方欢迎和我交流,
maven学习之路三的更多相关文章
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Maven学习总结(三):修改从Maven中心仓库下载到本地的jar包的默认存储位置
一:修改从Maven中心仓库下载到本地的jar包的默认存储位置 从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home ...
- zigbee学习之路(三):按键的控制
一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块. 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出 ...
- 学习之路三十二:VS调试的简单技巧
这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧,主要还是一些比较浅显的知识. 1. 调 ...
- Maven 学习总结(三) 之 依赖管理
聚合 为了要一次构建多个项目,而不是到每个模块目录下分别执行mvn命令.maven聚合这一特性就是为该需求服务的.为此我们需要创建一个额外的模块aggregator, 然后通过该模块构建整个项目的所有 ...
- 交互原型设计软件axure rp学习之路(三)
(三)Axure rp元件的触发事件 l OnClick(点击时): 鼠标点击事件,除了动态面板的所有的其他元件的点击时触发.比如点击按钮. l OnMouseEnter(鼠标移入时): 鼠标进入 ...
- Maven学习归纳(三)——依赖添加依赖排除与项目整合
一.Maven的坐标 1. 坐标的定义 数学意义上的坐标可以是平面上的(x,y)也可以是空间上的(x,y,z),都可以确定一个质点的位置和方向. Maven中有很多构件,为了能够自动化解析任何一个构件 ...
- maven 学习之路一
一.mave介绍: maven :我的理解就是一个代码构建管理的一个工具.类似的工具有gradle,ant等. 官方理解:Apache Maven is a software project mana ...
随机推荐
- IntelliJ IDEA 设置检查 serialVersionUID
IntelliJ IDEA 设置检查 serialVersionUID 背景介绍 我们在使用IntelliJ IDEA创建Java类的时候,有时候需要实现序列化接口 implements Serial ...
- C基础知识(7):字符串
在C语言中,字符串实际上是使用null字符'\0' 终止的一维字符数组.因此,一个以null结尾的字符串,包含了组成字符串的字符. C编译器会在初始化数组时,自动把'\0'放在字符串的末尾.所以不需要 ...
- springboot mybatis 下使用注解组织查询语句(有查询条件传入)
@Select("<script>" + "select cab.brandpre_id,cab.brandpre_num_app,cab.id,cab.br ...
- Spring体系
1.Spring简介 Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题.它是一个分层的JavaSE/JavaEE ...
- 【UVA - 1644 / POJ - 3518】Prime Gap(水题)
Prime Gap 这里直接写中文了 Descriptions: 对于一个数n,若n为素数则输出0,否则找到距离n最小的两个素数,一个大于n,一个小于n,输出他们的差(正数) Input 多组输入 每 ...
- C++学习笔记-多态
多态作为面向对象的重要概念,在如何一门面向对象编程语言中都有着举足轻重的作用,学习多态,有助于更好地理多态的行为 多态性(Polymorphism)是指一个名字,多种语义:或界面相同,多种实现. 重载 ...
- C学习笔记-内存管理
作用域 一个C语言变量的作用域可以是代码块 作用域,函数作用域或者文件作用域 代码块是{}之间的一段代码 同一个代码块不可以有重名变量 auto自动变量 一般情况下代码块内部定义的变量都是自动变量 也 ...
- GIT命令总结,so easy
一:GIT命令实战(码云) https://oschina.gitee.io/learn-git-branching/ 提交 git commit 创建分支 git branch <name&g ...
- job创建之后,不运行
创建job的时候要commit,然后还要看job是否分派进程 加上之后还是没有执行,后来发现 show parameter job_queue_process; 的结果为0,没有为job分配进程,所以 ...
- CentOS7安装Git-2.22.1
1.Git: 分布式版本控制系统(最初用于Linux),每个人的电脑上都是一个完整的版本库,具有强大的分支管理. 自己可以在脱机环境查看开发的版本历史 多人开发时如果充当中央仓库的Git仓库挂了,任何 ...