当前位置: 首页>移动开发>正文

grafana geomap 聚合 gradle聚合项目

接上一篇 Gradle入门到精通(四)- IDEA创建JavaSE、JavaWeb工程

这里我们基于MVC思想(web-->service-->dao),做一个简单例子。

1、创建父工程:gradle-parent

与之前创建Gradle工程的步骤一样

1.1  New Project --> 选择Gradle

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java,第1张

1.2 输入GroupId、ArtifactId、Version

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_02,第2张

1.3 配置Gralde本地路径等

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_03,第3张

1.4 点击 Next

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_04,第4张

1.5 点击Finish完成。

2、创建子模块:gradle-dao

选中刚才创建的父工程gradle-parent,并且右键,选择 New --> Module

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_05,第5张

出现如下图:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_06,第6张

 点击 Next,输入ArtifactId,这里为gradle-dao,

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_07,第7张

点击 Next,输入模块名,如下图:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_08,第8张

最后,点击 Finish,完成。如下图

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_09,第9张

这里有一个奇怪的问题,添加的子模块gradle-dao没有生成src相关包配置(在第一步中我们已经选择了java

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_xml_10,第10张


怎么解决?

我们只需要在gradle-dao这个子模块中的build.gradle文件的末尾添加一个task即可:

//解决gradle项目不会自动生成src及其相关配置的问题
task "create-dirs"  {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.mkdirs()
    }
}

 如下图所示:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_xml_11,第11张

因为我们创建工程时选择了自动导入,会自动生成。如果没有可以双击Gradle projects中的create-dirs生成即可。

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_spring_12,第12张

3、创建子模块:gradle-service

创建步骤与创建子模块gradle-dao一样

4、创建子模块:gradle-web

创建步骤与创建子模块gradle-dao一样;

javase工程转为javaweb工程(与前几篇内容一样):

  第一步:添加目录及文件:

  

src/main/webapp
    src/main/webapp/WEB-INF
    src/main/webapp/WEB-INF/web.xml

    web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
</web-app>

 

      效果如下图:

    

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_13,第13张

  第二步:在build.gradle文件添加war支持,如下:

    apply plugin: 'war'

    如下图:

    

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_14,第14张

5、配置模块之间的依赖关系

所有模块需要的jar等都放在父工程中

现在观察父工程gradle-parent下的settings.gradle文件的内容,发现该父工程包含了web、service、dao这三个子模块的信息,如下图所示:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_15,第15张

 

 

根据上一篇的小例子,我们需要引入spring相关的jar包,这些jar包应该放在哪里?每一个子模块都放吗?显然不合理。

我们把spring相关的jar包放到父工程gradle-parent下面,如下图所示:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_16,第16张

 

 

这样,其他子模块能直接使用这些内容吗?答案是还不行(这个与maven有区别),还需要把这些内容放到allprojects里面,如下内容:

allprojects {
    group 'com.etbird'
    version '1.0-SNAPSHOT'

    apply plugin: 'java'

    sourceCompatibility = 1.8

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        compile group: 'org.springframework', name: 'spring-context', version: '5.0.2.RELEASE'
        compile group: 'org.springframework', name: 'spring-web', version: '5.0.2.RELEASE'
        compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.2.RELEASE'
     //注意以下两行需要在web工程中,并且provided作用域改为providedCompile
        provided group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
        provided group: 'javax.servlet', name: 'jsp-api', version: '2.0'
    }
}
此时,allprojects里面的所有内容,子模块都能使用。

如下图所示:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_xml_17,第17张

 

 

接下来,我们就可以修改子模块的内容,

gradle-dao、gradle-service子模块的build.gradle的内容都去掉;

gradle-web子模块的内容只保留以下内容:

apply plugin: 'war'

其余删掉,因为都从父工程继承而来。

 

最后,我们子模块有以下依赖关系:gradle-web依赖gradle-service,gradle-service依赖gradle-dao,这些子模块依赖关系如何配置呢?

我们打开gradle-service的build.gradle文件,内容如下:

dependencies {
    compile project(":gradle-dao")
}

其中,gradle-dao就是模块名。

如下图:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_xml_18,第18张

 

 

同理,打开gradle-web的build.gradle文件,内容如下:

apply plugin: 'war'
dependencies {
    compile project(":gradle-service")
}

如下图:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_grafana geomap 聚合_19,第19张

6、小例子

开发dao层(gradle-dao模块)

UserDao.java

package com.etbird.dao;

public interface UserDao {
    public String save();
}

 

UserDaoImpl.java

package com.etbird.dao.impl;

import com.etbird.dao.UserDao;
import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl implements UserDao {
    @Override
    public String save() {
        return "save..ok..";
    }
}

 

build.gradle内容为空

开发service层(gradle-service模块)

UserService.java

package com.etbird.service;

public interface UserService {
    public String save();
}

 

UserServiceImpl.java

package com.etbird.service.impl;

import com.etbird.dao.UserDao;
import com.etbird.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    public String save() {
        return userDao.save();
    }
}

 

build.gradle

dependencies {
    compile project(":gradle-dao")
}

 

开发web层(gradle-web模块)

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_xml_20,第20张

UserController.java

package com.etbird.controller;

import com.etbird.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/save")
    public String save(Model model){
        model.addAttribute("msg", userService.save());
        return "ok";
    }
}

 

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/sping-aop.xsd
                http://www.springframework.org/schema/mvc
                http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--配置组件扫描-->
    <context:component-scan base-package="com.etbird.*"/>

    <!--处理器映射器、处理器解析器-->
    <mvc:annotation-driven/>

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--释放静态资源-->
    <mvc:default-servlet-handler/>
</beans>

 

ok.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${ msg }
</body>
</html>

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <!--配置springmvc核心servlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

 

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
index...
</body>
</html>

 

build.gradle

apply plugin: 'war'
dependencies {
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
    providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
    compile project(":gradle-service")
}

部署到本地tomcat

浏览器地址栏访问地址:http://localhost:8080/user/save

效果如下:

grafana geomap 聚合 gradle聚合项目,grafana geomap 聚合 gradle聚合项目_java_21,第21张

 至此,这个Gradle从入门到精通小系列就结束了,还有许多小问题需要完善~~

      期待下一个Gradle系列~~




https://www.xamrdz.com/mobile/4dg1932659.html

相关文章: