4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

时间:2023-02-03 04:41:23

Maven中有三大模块,分别是依赖、仓库、生命周期和插件,我们接下来下来介绍下依赖。

      关于依赖时,一些常量数据的获取

       <dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>user-core</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
</dependencies>


      Maven常见的依赖范围主要如下图所示:

      1、对于主代码classpath有效

           表示可以在,src/main/java下的代码中,调用jar文件提供的类和方法。

      2、对于测试代码classpath有效

           表示可以在,src/main/test下的代码中,调用jar文件提供的类和方法。

     3、被打包,对于运行时classpath有效

           表示,在其他的Maven项目里面,引入当前项目时。会将当前项目依赖的jar文件,一起加到当前项目

    4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

      通过一个小的项目来使用Maven

1、首先建立一个maven项目,这里我建立一个user的项目

2、接下来我们在这个项目中要使用到hibernate框架,此时就要在此项目中加入hibernate的支持,而之前我们讲到maven会自动的为我们加入jar包,但是前提是我们要找到怎么样编写hibernate的引用,如何编写呢?接下来我们就要牵涉到依赖的查询,在maven中所有的依赖都是通过坐标来保存的(GAV-->groupId,artifactId,version),在网上有一些仓库为我们提供了一下项目的坐标,比如:http://mvnrepository.com/http://www.sonatype.org/nexus/等等,这里我们就使用mvnrepository仓库了,在里面搜索hibernate就能找到对应的hibernate包,如下:

   4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

3、 如图,只需要将其中的dependency拷贝到当前项目的pom.xml中即可,如下:   

      <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
</dependencies>

4、 保存后,maven就会首先检查本地仓库中是否有hibernate的支持包,如果没有的话则会到网上进行下载,这个过程可能会稍微有点慢!

这里附上hibernate的配置文件和数据库的创建脚本:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<!-- JDBC-MySQL连接URL -->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_db</property>
<!-- JDBC-MySQL连接数据库的用户名 -->
<property name="connection.username">root</property>
<!-- JDBC-MySQL连接数据库的密码 -->
<property name="connection.password">123456</property>
<!-- JDBC-MySQL连接数据库的驱动名称 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 自动建表配置 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 显示Hibernate的调试SQL语句 -->
<property name="hibernate.show_sql">true</property>

<!-- 加载项目中的映射配置文件 -->
<mapping resource="com/toceansoft/pojo/Student.hbm.xml"/>

</session-factory>

</hibernate-configuration>
      数据库user的创建脚本:

      4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

5、完成后我们在src下再建立一个文件夹,src/main/resources用来保存hibernate的资源文件和log4j的日志文件,这样的话,我们还要加入log4j的jar包,我们继续到仓库里面搜索log4j对应的依赖坐标。

    4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)
    继续在pom.xml中加入对log4j的支持:

    

    <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

6、因为要进行数据库的连接,所以这里还要加入对mysql数据库的依赖:
4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

    继续在pom.xml中加入对mysql的依赖支持:

       <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependencies>

7、编写vo类User:

 1
2
3 import javax.persistence.Entity;
4 import javax.persistence.GeneratedValue;
5 import javax.persistence.Id;
6 import javax.persistence.Table;
7
8
9 @Entity
10 @Table(name = "t_user")
11 public class User {
12
13 private Integer id;
14 private String username;
15 private String password;
16 private String email;
17
18 @Id
19 @GeneratedValue
20 public Integer getId() {
21 return id;
22 }
23 public void setId(Integer id) {
24 this.id = id;
25 }
26 public String getUsername() {
27 return username;
28 }
29 public void setUsername(String username) {
30 this.username = username;
31 }
32 public String getPassword() {
33 return password;
34 }
35 public void setPassword(String password) {
36 this.password = password;
37 }
38 public String getEmail() {
39 return email;
40 }
41 public void setEmail(String email) {
42 this.email = email;
43 }
44
45
46 }
8、 编写测试类,在编写测试类之前我们要首先编写Hibernate的一个工具类,用来获得Session对象:

 1 
2
3 import org.hibernate.Session;
4 import org.hibernate.SessionFactory;
5 import org.hibernate.cfg.Configuration;
6
7 public class HibernateUntil {
8
9 private static SessionFactory factory = null;
10
11 static{
12
13 factory = new Configuration().configure().buildSessionFactory();
14 }
15
16 public static Session openSession(){
17 return factory.openSession();
18 }
19 }

9、 然后在编写测试类:

 1 
2
3 import org.hibernate.Session;
4 import org.junit.Assert;
5 import org.junit.Test;
6
7 import com.lq.wangzhen.user.vo.HibernateUntil;
8 import com.lq.wangzhen.user.vo.User;
9
10 public class TestUser {
11
12 @Test
13 public void testAdd(){
14 Session session = HibernateUntil.openSession();
15 session.beginTransaction();
16
17 User u = new User();
18 u.setUsername("zhangsan");
19 u.setPassword("123456");
20 u.setEmail("admin@admin.com");
21 session.save(u);
22 Assert.assertTrue(u.getId()>0);
23 session.getTransaction().commit();
24 }
25 }
10、 通过myeclipse在pom.xml右键点击,运行Maven test,如图:

     4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

此时我们查看数据库,就可以看到数据库中多了一条数据:

   4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)

11、然后运行maven package就可以进行程序的打包操作了:

     4、Maven的依赖的范围(应该注意依赖jar的传递性,根据依赖范围scope的不同而不同)