用命令行快速建立maven项目

-> mvn:archetype:generate
-> 直接回车或者自己输入你想生成的
-> groupId
->artifactId
->如果有默认值回车即可
最后 y 确认创建

我们看下他的目录结构

项目名:

src
->main
->java
->test
->java
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">
<modelVersion>4.0.0</modelVersion> <groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> <name>xxxx</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

如何手动创建最简单的Maven项目并验证

在我创建了文件夹helloMaven后

建立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">
<modelVersion>4.0.0</modelVersion> <groupId>xxxx</groupId>
<artifactId>helloMaven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> </project>

发现就可以使用 mvn clean 即证明mvn项目仅需要pom.xml支持即可秉泽artifactId和文件夹名不需要相同

Maven的pom.xml可以配置哪些标签

标签部分转载自:https://www.cnblogs.com/sharpest/p/7738436.html

<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/maven-v4_0_0.xsd">
<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->
<groupId>gstd</groupId>
<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>wocpWeb</artifactId>
<!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->
<packaging>war</packaging>
<!-- 本项目目前所处的版本号 -->
<version>0.0.1-SNAPSHOT</version>
<!--项目的名称, Maven产生的文档用 -->
<name>gstd-wocpWeb Maven Webapp</name>
<!--项目主页的URL, Maven产生的文档用 -->
<url>http://maven.apache.org</url>
<!--项目开发者属性-->
<properties>
<!-- 文件拷贝时的编码 -->
<!-- 可以在后文用${}取出便于全局控制,在很多情况下版本要统一如Spring -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.0.5.RELEASE</org.springframework.version>
<org.eclipse.jetty.version>8.0.3.v20111011</org.eclipse.jetty.version>
<!-- Hibernate版本 -->
<org.hibernate.version>3.6.8.Final</org.hibernate.version>
</properties>
<!--发现依赖和扩展的远程仓库列表。-->
<!--发现依赖和扩展的远程仓库列表。-->
<repositories>
<!--包含需要连接到远程仓库的信息-->
<repository>
<!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库-->
<id>public</id>
<!--远程仓库名称-->
<name>Public Repositories</name>
<!--远程仓库URL,按protocol://hostname/path形式-->
<url>http://192.168.101.23:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
<!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。-->
<dependencies>
<!--这里一般有多个dependency-->
<dependency>
<!--依赖的group ID-->
<groupId>javax.mail</groupId>
<!--依赖的artifact ID-->
<artifactId>mail</artifactId>
<!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。-->
<version>1.4</version>
</dependency>
</dependencies>
<!--构建项目需要的信息-->
<build>
<!--产生的构件的文件名-->
<finalName>gstd-wocpWeb</finalName>
<!-- 通过过滤功能解析资源文件中的maven属性 -->
<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resources>
<!--这个元素描述了项目相关或测试相关的所有资源路径-->
<resource>
<!--描述存放资源的目录,该路径相对POM路径-->
<directory>src/main/resources</directory>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
</resource>
</resources>
<!-- 编译Java代码插件 -->
<!--使用的插件列表 。-->
<plugins>
<!--plugin元素包含描述插件所需要的信息。-->
<plugin>
<!--插件在仓库里的group ID-->
<groupId>org.apache.maven.plugins</groupId>
<!--插件在仓库里的artifact ID-->
<artifactId>maven-compiler-plugin</artifactId>
<!--扩展配置项-->
<configuration>
<encoding>utf-8</encoding>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- skip test -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${org.eclipse.jetty.version}</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<useFileMappedBuffer>false</useFileMappedBuffer>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>${wocp.server.start.startport}</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<stopKey>${wocp.server.start.stopkey}</stopKey>
<stopPort>${wocp.server.start.stopport}</stopPort>
<systemProperties>
<systemProperty>
<name>org.mortbay.jetty.Request.maxFormContentSize</name>
<value>1000000</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin> <!-- js、css压缩 --> <!-- 利用assembly插件打包 -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->
<executions>
<!--execution元素包含了插件执行需要的信息-->
<execution>
<id>make-assembly</id>
<phase>package</phase>
<!--配置的执行目标-->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</configuration>
</plugin> </plugins>
</build> <!-- 针对不同环境的profile -->
<!--在列的项目构建profile,如果被激活,会修改构建处理-->
<profiles>
<!-- 开发配置 -->
<!--根据环境参数或命令行参数激活某个构建处理-->
<profile>
<id>dev</id>
<properties>
<wocp.server.start.startport>9200</wocp.server.start.startport>
<wocp.server.start.stopport>9201</wocp.server.start.stopport>
<wocp.server.start.stopkey>stop</wocp.server.start.stopkey>
<bill.db.driver>oracle.jdbc.OracleDriver</bill.db.driver>
<bill.db.url>jdbc:oracle:thin:@192.168.101.23:1521:nfc</bill.db.url>
<bill.db.username>bill_center</bill.db.username>
<bill.db.passwd>bill</bill.db.passwd>
<shine.db.driver>oracle.jdbc.OracleDriver</shine.db.driver>
<shine.db.url>jdbc:oracle:thin:@192.168.101.23:1521:nfc</shine.db.url>
<shine.db.username>shine_center</shine.db.username>
<shine.db.passwd>shine</shine.db.passwd>
</properties>
</profile>
<!-- 连接测试库的配置 -->
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<wocp.server.start.startport>5180</wocp.server.start.startport>
<wocp.server.start.stopport>5181</wocp.server.start.stopport>
<wocp.server.start.stopkey>stop</wocp.server.start.stopkey>
<bill.db.driver>oracle.jdbc.OracleDriver</bill.db.driver>
<bill.db.url>jdbc:oracle:thin:@192.168.1.66:1521:orcl</bill.db.url>
<bill.db.username>dev_bill_smc</bill.db.username>
<bill.db.passwd>abc</bill.db.passwd>
<shine.db.driver>oracle.jdbc.OracleDriver</shine.db.driver>
<shine.db.url>jdbc:oracle:thin:@192.168.1.66:1521:orcl</shine.db.url>
<shine.db.username>dev_shine_smc</shine.db.username>
<shine.db.passwd>abc</shine.db.passwd>
</properties>
</profile>
<!-- 生产配置 -->
<profile>
<id>product</id>
<properties>
</properties>
</profile>
</profiles>
</project>

一点一点学maven(06)——POM.XML文件常用标签使用介绍](http://blog.csdn.net/javaloveiphone/article/details/52080886)

<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"> <!-- 指定了当前POM的版本 -->
<modelVersion>4.0.0</modelVersion> <!-- 项目坐标信息 -->
<!-- 项目主标识,用于定义当前项目属于的实际项目,格式与项目创建的包是一样的,公司域名反写-->
<groupId>com.jsun.demo</groupId>
<!-- 项目名或模块名或项目名+模块名组成 -->
<artifactId>demo-maven01</artifactId>
<!-- 当前项目版本号,一般由三个数字组成,第一个0表示大版本号,第二个0表示分支版本号,第三个1表示小版本号 -->
<!-- SNAPSHOT代表当前版本类型为快照版本,还有alpha内部版本、beta公测版本、release发布版本、ga正式版本等 -->
<version>0.0.1-SNAPSHOT</version>
<!-- maven打包方式,默认为jar,还有:pom,maven-plugin,war,rar,zip -->
<packaging>jar</packaging> <!-- 用在子模块中,实现对父模块的继承 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent> <!-- 聚合多个maven项目,同时对所有聚合项目进行编译 -->
<modules>
<module></module>
</modules> <!-- 项目描述名,url,详细描述,产生项目文档使用 -->
<name>Maven01</name>
<url>http://maven.apache.org</url>
<description>测试maven项目</description> <!-- 开发人员列表,项目发布使用 -->
<developers>
<!-- 某个项目开发者的信息 -->
<developer>
<!-- 项目开发者的唯一标识符 -->
<id>001</id>
<!-- 项目开发者的全名 -->
<name>jsun</name>
<!-- 项目开发者的email -->
<email> jsun@163.com </email>
<!-- 项目开发者的主页的URL -->
<url /> <!-- 项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->
<roles>
<role>developer</role>
</roles> <!-- 项目开发者所属组织 -->
<organization>com-jsun</organization>
<!-- 项目开发者所属组织的URL -->
<organizationUrl> http://demo.jsun.com/jsun</organizationUrl>
</developer>
</developers> <!-- 许可证信息, -->
<licenses>
<license>
<name></name>
<!-- 官方的license正文页面的URL -->
<url></url>
<!-- 项目分发的主要方式:repo,可以从Maven库下载,manual,用户必须手动下载和安装依赖 -->
<distribution></distribution>
<!-- 关于license的补充信息 -->
<comments></comments>
</license>
</licenses> <!-- 项目所属组织信息 -->
<organization>
<name></name>
<url></url>
</organization> <!-- 属性列表,相当于定义的公共常量,引用方式比如:${project.build.sourceEncoding} -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties> <!-- 依赖列表 -->
<dependencies>
<!-- 具体依赖项,下面主要包含依赖的坐标、类型、范围等信息 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>1.2.6</version> <!-- 依赖的类型 -->
<type>jar</type> <!-- 项目如果要使用某个框架或依赖,需要把相关jar包引用到classpath中,maven项目提供了三个classpath:编译、测试、运行 -->
<!-- 依赖的范围用于控制依赖于三种classpath关系的,包括:compile、provided、runtime、test、system、import -->
<!--
compile:默认范围,编译、测试、运行都有效
provided:编译和测试有效,最后运行不会被加入
runtime:在测试和运行的时候有效,编译不会被加入,比如jdbc驱动jar
test:测试阶段有效,比如junit
system:与provided一致,编译和测试阶段有效,但与系统关联,可移植性差
import:导入的范围,它只是用在dependencyManagement中,表示从其它的pom中导入dependency的配置
-->
<!-- 表示当前依赖只能在测试代码中引用使用,在主代码中引用使用则报错 -->
<scope>test</scope> <!-- 排除依赖传递列表,比如A依赖B,B依赖C,但是A并没有使用C的功能,可以把C排除-->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!-- 主动设置禁止自己被传递,只在当前项目中使用 -->
<optional>true</optional>
</dependency> <dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<!-- 在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar,
具体解释查看:http://www.cnblogs.com/lovingprince/archive/2010/09/19/2166273.html -->
<classifier>jdk15</classifier>
<version>2.4</version>
</dependency>
</dependencies> <!-- 使用dependencyManagement标签管理依赖,实际管理的是依赖的版本号,让
所有子项目中引用对应依赖而不用显式的列出版本号;
依赖并不会在当前项目引入 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</dependencyManagement> <!-- 构建插件 -->
<build>
<!--
Maven定制化打包后的包名
Maven默认的包名为:<finalName>${project.artifactId}-${project.version}</finalName>
定制化想要的包名,如加上时间戳:<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>
-->
<finalName>myProject</finalName> <!-- 插件列表 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins> <!-- 插件管理列表,与dependencyManagement标签作用相似,管理插件版本号,让子项目继承使用 -->
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<!-- 插件扩展配置 -->
<!-- 更详细的例子:http://my.oschina.net/zh119893/blog/276090 -->
<configuration>
<!-- 源代码编译版本 -->
<source>1.7</source>
<!-- 目标平台编译版本 -->
<target>1.7</target>
<!-- 设置编译字符集编码 -->
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin> </plugins>
</pluginManagement>
</build>
</project>

所以经过总结可以看出Maven的pom.xml中大致有以下几种:

<properties> //配置全局统一的配置
<repositories> //配置远程仓库 但是一般使用默认maven
<dependencies> //用到最多的项目依赖
<build> //构建项目涉及到的 <resources>,<plugin>等

如何建立两个Maven项目之间的依赖关系

如果A项目依赖B项目,打开A项目的pom.xml 在期中录入B项目的信息即可

<dependencies>
<dependency>
<groupId>xxxx</groupId>
<artifactId>mavenPom</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

Maven项目的依赖关系有哪些

项目的依赖关系主要分为三种:依赖,继承,聚合

Maven之(九)依赖关系

附录

在实际使用调用自己项目依赖时需要先进行

mvn install

解决Maven项目相互依赖/循环依赖/双向依赖的问题 http://blog.csdn.net/leolu007/article/details/53079875

手动创建Maven项目并建立两个项目之间的依赖关系的更多相关文章

  1. windows server/windows同一系统下建立两个目录之间的映射关系

    应用场景,如下: 当两个不同的项目共享同一个资源目录.同一个数据库时,由于两项目根目录不一样,再加上部分项目可能有入口重写规则限制了用户的访问权限. 因此,我们可以利用window 服务器给我们提供的 ...

  2. maven学习(二)——手动创建maven项目

    一.Maven的简单使用 1.Maven项目的目录约定 MavenProjectRoot(项目根目录)   |----src   |     |----main   |     |         | ...

  3. Maven快速入门(二)手动创建maven项目hellomaven

    之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...

  4. Linux:两台服务器之间添加信任关系,进行远程操作的时候不需要输入密码

    两台机器之间建立信任关系的步骤: 1. 在机器1上root用户执行ssh-keygen命令,生成建立安全信任关系的证书,直接Enter [root@CentOS64-x64 ~]# ssh-keyge ...

  5. Maven 梳理-手动创建Maven项目(非web),使用Maven编译、测试、打包、安装、引用

    创建空目录 F:\jtDevelop\maventest\myapp 创建pom.xml文件 <project xmlns="http://maven.apache.org/POM/4 ...

  6. 手动创建maven项目+cmd+webapp+tomcat

    1.创建文件夹 2.在刚刚创建的文件夹目录下:创建一个scr文件夹和pom.xml文件 3.在pom.xml配置 <?xml version="1.0" encoding=& ...

  7. IDEA 创建maven jar、war、 pom项目

    创建java jar.pom项目时创建maven-archetype-quickstart 创建java war项目时创建maven-archetype-webapp

  8. .NET Core添加项目之间的依赖关系

  9. (二)maven依赖,两个项目之间如何依赖,继承实现

    maven的jar之间存在依赖关系的,我们在引入一个时,其他有依赖关系的也会被引入 依赖排除: 比如现在有两个依赖关系,A(x,java,y.java,z.java)  B(a,java,b,java ...

随机推荐

  1. MyBatis一级缓存的笔记及记录

    精髓内容来源于<图灵学院> 一.概述: 一级缓存是MyBatis天然自带的,是默认开启且没有关闭的地方,1级缓存只能作用于查询回话中,所以也叫会话缓存: 这里举个例子: 订单表存在一对多的 ...

  2. c++primer chapter one

    一个函数的定义包含四个部分:返回类型(return type),函数名(function name),一个括号包含的形参列表(parameter,允许为空)以及函数体(function body). ...

  3. 在vue中使用async/await遇到的坑

    最近无聊在搞一些新的东西,今天就遇到一个async/await的坑: 因为我用的不是vue官方的脚手架,所以遇到这样的问题: await is a reserved word 这样的警告,我猜应该是缺 ...

  4. Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

  5. 082、数据收集利器 cAdvisor (2019-04-30 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7683190.html   cAdvisor 是google 开发的容器监控工具,下面我们开始安装和体验 cAdvisor ...

  6. AGC015E Mr.Aoki Incubator

    atcoder luogu 首先可以考虑给一个人\(A\)染色.其他人被染色,要么被本来在后面的速度更快的人染色,要么被在前面的更慢的人染色.然后假设一个速度比最开始那个人慢的人\(B\)最后被染色了 ...

  7. the server responsed width a status of 404 (Not Found)

    最近使用VS code写代码,使用Beautify插件格式化代码后,报以下错误: 反复查看代码,初始感觉没什么问题,有点懵.. 随着时间的推移,后来果然发现问题所在: 在加载模块的地方,多出了个空格( ...

  8. Android 一共有多少种动画?准确告诉你!

    Android 动画 Android 动画在开发中是不可或缺的功能,或者说是界面灵动的添加剂.那你是否总结过 Android 中总共为开发者提供了多少种方式的动画呢?今天就为大家总结归纳一下.   报 ...

  9. Delphi 标识符

  10. DSP学习资料:基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板

    基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板   一.板卡概述 高性能VPX信号处理板基于标准6U VPX架构,提供两个标准FMC插槽,适用于电子对抗或雷达信号等领域 ...