ethernetmanager需要哪一个jar包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ethernetmanager需要哪一个jar包相关的知识,希望对你有一定的参考价值。
参考技术A import java.io.BufferedReader;import java.io.IOException;
import java.io.InputStreamReader;
public class test
public static void main(String[] args) throws IOException
System.out.print("输入圆盘的个数:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
int m=Integer.parseInt(str);
System.out.println("移动步骤:");
hanoi(m,'A','B','C');
本回答被提问者和网友采纳 参考技术B srping-core/srping
Maven使用详解
什么是Maven?
如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。
以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常。
而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
Maven规定的目录结构
若要使用Maven,那么项目的目录结构必须符合Maven的规范,其目录结构如下:
Maven基本命令
- 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName -DartifactId=projectName
- 创建Maven的Web项目: mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp
- 编译源代码:mvn compile
- 编译测试代码:mvn test-compile
- 运行测试:mvn test
- 产生site:mvn site
- 打包:mvn package
- 在本地Repository中安装jar:mvn install
- 清除产生的项目:mvn clean
- 生成eclipse项目:mvn eclipse:eclipse
- 生成idea项目:mvn idea:idea
- 组合使用goal命令,如只打包不测试:mvn -Dtest package
- 编译测试的内容:mvn test-compile
- 只打jar包: mvn jar:jar
- 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile ( -skipping 的灵活运用,当然也可以用于其他组合命令)
- 清除eclipse的一些系统设置:mvn eclipse:clean
什么是Maven仓库?
Maven仓库用来存放Maven管理的所有Jar包。分为:本地仓库 和 中央仓库。
- 本地仓库
Maven本地的Jar包仓库。 - 中央仓库
Maven官方提供的远程仓库。
当项目编译时,Maven首先从本地仓库中寻找项目所需的Jar包,若本地仓库没有,再到Maven的中央仓库下载所需Jar包。
什么是“坐标”?
在Maven中,坐标是Jar包的唯一标识,Maven通过坐标在仓库中找到项目所需的Jar包。
如下代码中,groupId和artifactId构成了一个Jar包的坐标。
1 <dependency> 2 <groupId>ch.qos.logback</groupId> 3 <artifactId>logback-classic</artifactId> 4 <version>1.1.1</version> 5 </dependency>
- groupId:所需Jar包的项目名
- artifactId:所需Jar包的模块名
- version:所需Jar包的版本号
传递依赖 与 排除依赖
- 传递依赖:如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和简洁引用的Jar包都下载到本地。
- 排除依赖:如果我们只想下载直接引用的Jar包,那么需要在pom.xml中做如下配置:(将需要排除的Jar包的坐标写在中)
1 <exclusions> 2 <exclusion> 3 <groupId>ch.qos.logback</groupId> 4 <artifactId>logback-classic</artifactId> 5 </exclusion> 6 </exclusions>
依赖冲突
若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的。
- 短路优先
本项目——>A.jar——>B.jar——>X.jar
本项目——>C.jar——>X.jar
若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。
在此时,Maven只会引用引用路径最短的Jar。
- 声明优先
若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁。
聚合
-
什么是聚合?
将多个项目同时运行就称为聚合。 -
如何实现聚合?
只需在pom中作如下配置即可实现聚合:
1 <modules> 2 <module>../模块1</module> 3 <module>../模块2</module> 4 <module>../模块3</module> 5 </modules>
继承
-
什么是继承?
在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可。 -
如何实现继承?
- 父pom配置:将需要继承的Jar包的坐标放入标签即可。
1 <dependencyManagement> 2 <dependencies> 3 <dependency> 4 <groupId>org.apache.shiro</groupId> 5 <artifactId>shiro-spring</artifactId> 6 <version>1.2.2</version> 7 </dependency> 8 </dependencies> 9 </dependencyManagement>
- 子pom配置:
1 <parent> 2 <groupId>父pom所在项目的groupId</groupId> 3 <artifactId>父pom所在项目的artifactId</artifactId> 4 <version>父pom所在项目的版本号</version> 5 </parent>
使用Maven构建Web项目
-
New Maven项目:选择WebApp:
-
若使用JSP,需添加Servlet依赖:
注:Servlet依赖只在编译和测试时使用!
1 <dependency> 2 <groupId>javax.servlet</groupId> 3 <artifactId>javax.servlet-api</artifactId> 4 <version>3.0.1</version> 5 <!-- 只在编译和测试时运行 --> 6 <scope>provided</scope> 7 </dependency>
-
在Bulid Path中设置resource输出目录:
-
勾选:Dynamic Web Module
-
删掉测试目录
-
在pom中加入jetty的插件,并设置JDK版本:
1 <plugins> 2 <plugin> 3 <groupId>org.apache.maven.plugins</groupId> 4 <artifactId>maven-compiler-plugin</artifactId> 5 <configuration> 6 <source>1.8</source> 7 <target>1.8</target> 8 </configuration> 9 </plugin> 10 11 <plugin> 12 <groupId>org.eclipse.jetty</groupId> 13 <artifactId>jetty-maven-plugin</artifactId> 14 <version>9.3.10.v20160621</version> 15 <executions> 16 <execution> 17 <phase>package</phase> 18 </execution> 19 </executions> 20 </plugin> 21 </plugins>
-
运行项目:
-
输入:jetty:run
-
访问127.0.0.1:8080
若出现如下界面,表示成功!
pom.xml详解
pom.xml是Maven的核心,你的项目需要什么Jar包就在pom.xml里面配置。当编译项目时Maven读取该文件,并从仓库中下载相应的Jar包。
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> 4 <!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。--> 5 <parent> 6 <!--被继承的父项目的构件标识符--> 7 <artifactId/> 8 <!--被继承的父项目的全球唯一标识符--> 9 <groupId/> 10 <!--被继承的父项目的版本--> 11 <version/> 12 <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。--> 13 <relativePath/> 14 </parent> 15 <!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。--> 16 <modelVersion>4.0.0</modelVersion> 17 <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app--> 18 <groupId>cn.erhuowang</groupId> 19 <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个 特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> 20 <artifactId>erhuowang-maven2</artifactId> 21 <!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型--> 22 <packaging>war</packaging> 23 <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> 24 <version>1.0-SNAPSHOT</version> 25 <!--项目的名称, Maven产生的文档用--> 26 <name>erhuo-maven</name> 27 <!--项目主页的URL, Maven产生的文档用--> 28 <url>http://erhuowang.cn</url> 29 <!-- 项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标 签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。--> 30 <description>A maven project to study maven.</description> 31 <!--描述了这个项目构建环境中的前提条件。--> 32 <prerequisites> 33 <!--构建该项目或使用该插件所需要的Maven的最低版本--> 34 <maven/> 35 </prerequisites> 36 <!--项目名称和URL--> 37 <issueManagement> 38 <!--项目名字,--> 39 <system>erhuowang</system> 40 <!--该项目使用的URL--> 41 <url>http://erhuowang.cn</url> 42 </issueManagement> 43 <!--项目持续集成信息--> 44 <ciManagement> 45 <!--持续集成系统的名字,例如continuum--> 46 <system/> 47 <!--该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。--> 48 <url/> 49 <!--构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告)--> 50 <notifiers> 51 <!--配置一种方式,当构建中断时,以该方式通知用户/开发者--> 52 <notifier> 53 <!--传送通知的途径--> 54 <type/> 55 <!--发生错误时是否通知--> 56 <sendOnError/> 57 <!--构建失败时是否通知--> 58 <sendOnFailure/> 59 <!--构建成功时是否通知--> 60 <sendOnSuccess/> 61 <!--发生警告时是否通知--> 62 <sendOnWarning/> 63 <!--不赞成使用。通知发送到哪里--> 64 <address/> 65 <!--扩展配置项--> 66 <configuration/> 67 </notifier> 68 </notifiers> 69 </ciManagement> 70 <!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。--> 71 <inceptionYear/> 72 <!--项目相关邮件列表信息--> 73 <mailingLists> 74 <!--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。--> 75 <mailingList> 76 <!--邮件的名称--> 77 <name>Demo</name> 78 <!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建--> 79 <post>chaibozhou@163.com</post> 80 <!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建--> 81 <subscribe>chaibozhou@163.com</subscribe> 82 <!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建--> 83 <unsubscribe>chaibozhou@163.com</unsubscribe> 84 <!--你可以浏览邮件信息的URL--> 85 <archive>chaibozhou@163.com</archive> 86 </mailingList> 87 </mailingLists> 88 <!--项目开发者列表--> 89 <developers> 90 <!--某个项目开发者的信息--> 91 <developer> 92 <!--SCM里项目开发者的唯一标识符--> 93 <id>HELLO WORLD</id> 94 <!--项目开发者的全名--> 95 <name>chaimm</name> 96 <!--项目开发者的email--> 97 <email>chaibozhou@163.com</email> 98 <!--项目开发者的主页的URL--> 99 <url/> 100 <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色--> 101 <roles> 102 <role>Project Manager</role> 103 <role>Architect</role> 104 </roles> 105 <!--项目开发者所属组织--> 106 <organization>demo</organization> 107 <!--项目开发者所属组织的URL--> 108 <organizationUrl>http://erhuowang.cn</organizationUrl> 109 <!--项目开发者属性,如即时消息如何处理等--> 110 <properties> 111 <dept>No</dept> 112 </properties> 113 <!--项目开发者所在时区, -11到12范围内的整数。--> 114 <timezone>-5</timezone> 115 </developer> 116 </developers> 117 <!--项目的其他贡献者列表--> 118 <contributors> 119 <!--项目的其他贡献者。参见developers/developer元素--> 120 <contributor> 121 <name/><email/><url/><organization/><organizationUrl/><roles/><timezone/><properties/> 122 </contributor> 123 </contributors> 124 <!--该元素描述了项目所有License列表。 应该只列出该项目的license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。--> 125 <licenses> 126 <!--描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。spring3中需要的所有jar包从哪里弄