精华内容
下载资源
问答
  • Gradle父子项目构建

    千次阅读 2020-04-09 15:53:36
    Gradle对构建模块化项目提供了强大的支持,在Gradle中每一个模块都是一个项目,称之为Gradle多项目构建技术,多项目构建实现了项目模块化,降低代码耦合度,增加内聚性,本篇文章将简单介绍如何使用Gradle进行多项目...

    Gradle对构建模块化项目提供了强大的支持,在Gradle中每一个模块都是一个项目,称之为Gradle多项目构建技术,多项目构建实现了项目模块化,降低代码耦合度,增加内聚性,本篇文章将简单介绍如何使用Gradle进行多项目构建。

     

    1、组装多项目构建

    Gradle整个项目是由一个根目录和多个模块的子目录构成,在根目录下新建build.gradle构建脚本,使用gradle projects命令查看所有参与构建的项目:

    > Task :projects 
    //只有一个根项目,无子项目
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'root'
    No sub-projects


    示例中使用的多项目层次结构如下图,定义了3个子项目:

    这里写图片描述
    ①settings文件介绍:使用过Gradle构建项目的都应该知道这个文件,该文件声明了项目层次结构所需的配置。默认情况下,这个文件被命名为settings.gradle,并且和根项目的build.gradle文件放在一起。简单配置settings.gradle文件:

    //settings.gradle脚本:
    include 'model'
    include 'repository', 'web'
    
    //再次运行gradle projects命令,可以看出多了3个子项目:
    > Task :projects 
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'root'
    +--- Project ':model'
    +--- Project ':repository'
    \--- Project ':web'


    ②settings API的理解:Gradle在组装构建之前,会创建一个Settings实例,Settings接口是settings文件的直接表示,它的主要作用就是添加Project实例参与多项目构建,下图显示了Settings接口的相关方法:

    这里写图片描述
    我们可以在settings.gradle文件中直接使用这些相关的API进行编码,例如调用了include(String)方法将子项目添加到多项目的构建中。

    ③settings执行的阶段:在介绍task的使用时说到了构建过程的三个生命周期:初始化、配置和执行。那么是在哪个阶段解析执行settings文件中的代码的呢?可以想到的是,它肯定是在Project实例配置之前进行实例化的:

    这里写图片描述
    ④如何找到settings文件:只要根项目或者任何子项目的目录中包含构建文件,Gradle就运行你从相应的位置运行构建。 Gradle是如何知道一个子项目是一个多项目构建的一部分的呢?它需要找到settings文件,这个文件指示了子项目是否包含在多项目构建中。步骤:①首先Gradle在与当前目录同层次的master目录下搜索settings文件,②找不到则在父目录下查找settings文件,下图分别对应这两种情况:

    这里写图片描述
    ⑤项目的两种布局:分层布局和平面布局,android项目中使用的就是分层布局。对于平面布局来说,要想包括与根项目同一嵌套层次的项目,需要使用includeFlat方法,下图分别对应的是分层布局和平面布局:

    这里写图片描述
     

    2、子项目的构建文件

    每个子项目的构建需要在子项目的目录下新建一个build.gradle构建脚本,该目录树如下图:

    这里写图片描述
    ①根项目构建脚本:

    /**为所有项目(包括根项目和所有子项目)设置group和version属性*/
    allprojects {
        group = 'com.manning.gia'
        version = '0.1'
    }
    /**所有子项目应用Java插件*/
    subprojects {
        apply plugin: 'java'
    }


    ②子项目构建脚本:一般在子项目构建脚本中不声明任何代码也是可以的,除非有一些其它的需求,例如web子项目的构建脚本如下:

    /**应用war插件*/
    apply plugin: 'war'
    /**声明中心仓库*/
    repositories {
        mavenCentral()
    }
    dependencies {
        /**定义依赖了repository子项目*/
        compile project(':repository')
    }


    3、定义不同的构建脚本名称

    标准的Gradle构建文件名是build.gradle,但是也许有必要使用一些更具有表达性的名称来命名构建文件。想使用自定义的构建脚本文件名,关键在于settings文件。假如项目结构如下图:

    这里写图片描述

    include 'todo-model', 'todo-repository', 'todo-web'
    
    /**更改构建文件,将build.gradle 更换成更有意义的命名,如 model.gradle
     * it.name 是子项目名:todo-model todo-repository todo-web*/
    rootProject.children.each {
        /**设置构建脚本文件名*/
        it.buildFileName = it.name + '.gradle' - 'todo-'
    }


    以上简单介绍多项目构建的原理,settings文件如何实现基本的配置,如何是一个项目作为子项目添加到构建中等。还是那句话,知其所以然能够让你得心应手。
     

    展开全文
  • 项目构建之maven篇:2.HelloWorld项目构建过程

    文件结构说明:





    项目构建生命周期:


    清理

    编译

    测试

    打包

    运行

    部署


    清理与编译


    hello\pom.xml


    POM:Project Object Model,项目对象模型

    pom.xml与ant的build.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>com.demo.hello</groupId>
    	<artifactId>hello-world</artifactId>
    	<version>1.0.0-SNAPSHOT</version>	
    	<name>hello</name>
    </project>

    说明:


    modelVersion:指定当前POM模型的版本,Maven2及Maven3只能是4.0.0

    groupId:项目组名称

    artifactId:当前Maven项目在组中的唯一的id

    version:版本


    hello\src\main\java下的Hello.java

    package com.demo ;
    public class Hello {
    	public void sayHi(){
    		System.out.println("hello world");
    	}
    	public static void main(String [] args){
    		new Hello().sayHi();
    	}
    }

    运行清理及编译命令:


    进入hello的文件夹路径,运行

    mvn clean compile

    运行结果





    查看target文件夹的内容






    查看本地仓库






    测试:


    hello\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>com.demo.hello</groupId>
    	<artifactId>hello-world</artifactId>
    	<version>1.0.0-SNAPSHOT</version>	
    	<name>hello</name>
    	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
    	  <dependencies>
    		<dependency>
    		  <groupId>junit</groupId>
    		  <artifactId>junit</artifactId>
    		  <version>4.10</version>
    		  <scope>test</scope>
    		</dependency>
    	  </dependencies>
    </project>

    dependencies:指明这个项目所需要的依赖包

    hello\src\test\java\HelloTest.java

    package com.demo;
    
    import org.junit.Test;
    
    
    public class HelloTest {
    	@Test
    	public void testHello(){
    		new Hello().sayHi();	
    	}
    }
    

    运行测试命令

    mvn clean test


    查看结果





    查看本地仓库





    打包

    运行命令


    mvn clean package


    查看结果






    运行


    重新改造pom.xml,加入插件

    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>com.demo.hello</groupId>
    	<artifactId>hello-world</artifactId>
    	<version>1.0.0-SNAPSHOT</version>	
    	<name>hello</name>
    	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
    	  <dependencies>
    		<dependency>
    		  <groupId>junit</groupId>
    		  <artifactId>junit</artifactId>
    		  <version>4.10</version>
    		  <scope>test</scope>
    		</dependency>
    	  </dependencies>
    
    	  <build>
        <plugins>
      	  <plugin>
      	    <groupId>org.apache.maven.plugins</groupId>
      	    <artifactId>maven-compiler-plugin</artifactId>
      	    <configuration>
      	      <source>1.5</source>
      	      <target>1.5</target>
      	    </configuration>
      	  </plugin>
      	  <plugin>
      	    <groupId>org.apache.maven.plugins</groupId>
      	    <artifactId>maven-shade-plugin</artifactId>
      	    <version>1.2.1</version>
      	    <executions>
      	      <execution>
      	        <phase>package</phase>
      	        <goals>
      	          <goal>shade</goal>
      	        </goals>
      	        <configuration>
      	          <transformers>
      	            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
      	              <mainClass>com.demo.Hello</mainClass>
      	            </transformer>
      	          </transformers>
      	        </configuration>
      	      </execution>
      	    </executions>
      	  </plugin>
        </plugins>
      </build>
    </project>


    重新运行打包命令:


    mvn clean package


    执行完毕后,进入hello/target下,运行命令


    java -jar hello-world-1.0.0-SNAPSHOT.jar



    查看结果:





    安装到本地仓库,供其它项目依赖


    运行命令


    mvn clean install



    查看本地仓库





    源代码下载


    展开全文
  • Gradle之多项目构建

    千次阅读 2018-09-17 10:04:10
    Gradle对构建模块化项目提供了强大的支持,在Gradle中每一个模块都是一个项目,称之为Gradle多项目构建技术,多项目构建实现了项目模块化,降低代码耦合度,增加内聚性,本篇文章将简单介绍如何使用Gradle进行多项目...

    Gradle对构建模块化项目提供了强大的支持,在Gradle中每一个模块都是一个项目,称之为Gradle多项目构建技术,多项目构建实现了项目模块化,降低代码耦合度,增加内聚性,本篇文章将简单介绍如何使用Gradle进行多项目构建。

    1、组装多项目构建:Gradle整个项目是由一个根目录和多个模块的子目录构成,在根目录下新建build.gradle构建脚本,使用gradle projects命令查看所有参与构建的项目:

    > Task :projects 
    //只有一个根项目,无子项目
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'root'
    No sub-projects

    示例中使用的多项目层次结构如下图,定义了3个子项目:
    这里写图片描述

    ①settings文件介绍:使用过Gradle构建项目的都应该知道这个文件,该文件声明了项目层次结构所需的配置。默认情况下,这个文件被命名为settings.gradle,并且和根项目的build.gradle文件放在一起。简单配置settings.gradle文件:

    //settings.gradle脚本:
    include 'model'
    include 'repository', 'web'
    
    //再次运行gradle projects命令,可以看出多了3个子项目:
    > Task :projects 
    ------------------------------------------------------------
    Root project
    ------------------------------------------------------------
    Root project 'root'
    +--- Project ':model'
    +--- Project ':repository'
    \--- Project ':web'

    ②settings API的理解:Gradle在组装构建之前,会创建一个Settings实例,Settings接口是settings文件的直接表示,它的主要作用就是添加Project实例参与多项目构建,下图显示了Settings接口的相关方法:
    这里写图片描述

    我们可以在settings.gradle文件中直接使用这些相关的API进行编码,例如调用了include(String)方法将子项目添加到多项目的构建中。

    ③settings执行的阶段:在介绍task的使用时说到了构建过程的三个生命周期:初始化、配置和执行。那么是在哪个阶段解析执行settings文件中的代码的呢?可以想到的是,它肯定是在Project实例配置之前进行实例化的:
    这里写图片描述

    ④如何找到settings文件只要根项目或者任何子项目的目录中包含构建文件,Gradle就运行你从相应的位置运行构建。 Gradle是如何知道一个子项目是一个多项目构建的一部分的呢?它需要找到settings文件,这个文件指示了子项目是否包含在多项目构建中。步骤:①首先Gradle在与当前目录同层次的master目录下搜索settings文件,②找不到则在父目录下查找settings文件,下图分别对应这两种情况:
    这里写图片描述

    ⑤项目的两种布局:分层布局和平面布局,android项目中使用的就是分层布局。对于平面布局来说,要想包括与根项目同一嵌套层次的项目,需要使用includeFlat方法,下图分别对应的是分层布局和平面布局:
    这里写图片描述

    2、子项目的构建文件:每个子项目的构建需要在子项目的目录下新建一个build.gradle构建脚本,该目录树如下图:
    这里写图片描述

    ①根项目构建脚本

    /**为所有项目(包括根项目和所有子项目)设置group和version属性*/
    allprojects {
        group = 'com.manning.gia'
        version = '0.1'
    }
    /**所有子项目应用Java插件*/
    subprojects {
        apply plugin: 'java'
    }

    ②子项目构建脚本:一般在子项目构建脚本中不声明任何代码也是可以的,除非有一些其它的需求,例如web子项目的构建脚本如下:

    /**应用war插件*/
    apply plugin: 'war'
    /**声明中心仓库*/
    repositories {
        mavenCentral()
    }
    dependencies {
        /**定义依赖了repository子项目*/
        compile project(':repository')
    }

    3、定义不同的构建脚本名称:标准的Gradle构建文件名是build.gradle,但是也许有必要使用一些更具有表达性的名称来命名构建文件。想使用自定义的构建脚本文件名,关键在于settings文件。假如项目结构如下图:
    这里写图片描述

    include 'todo-model', 'todo-repository', 'todo-web'
    
    /**更改构建文件,将build.gradle 更换成更有意义的命名,如 model.gradle
     * it.name 是子项目名:todo-model todo-repository todo-web*/
    rootProject.children.each {
        /**设置构建脚本文件名*/
        it.buildFileName = it.name + '.gradle' - 'todo-'
    }

    以上简单介绍多项目构建的原理,settings文件如何实现基本的配置,如何是一个项目作为子项目添加到构建中等。还是那句话,知其所以然能够让你得心应手。

    展开全文
  • Maven项目构建(一):什么是Maven?

    万次阅读 多人点赞 2018-01-31 16:40:39
    Maven项目构建(一):什么是Maven?​ Maven是一个项目构建和项目管理的工具。一、项目构建是什么项目构建可以理解为一个项目从无到有的一系列操作过程。比如写一个简单的Java程序的过程如下:1、创建后缀为.java的...

    Maven项目构建(一):什么是Maven?

    ​ 作者:杨景文(javen666.com)

    Maven是一个项目构建和项目管理的工具。
    视频教程:https://www.bilibili.com/video/BV1z5411g7G4

    一、项目构建是什么

    项目构建可以理解为一个项目从无到有的一系列操作过程。比如写一个简单的Java程序的过程如下:

    1、创建后缀为.java的源文件,然后再文件中写代码。

    2、编译.java文件为字节码文件(.class文件)。

    3、执行字节码文件输出结果。

    以上就是一个简单Java程序的构建过程。里面要用到Jdk中的java和javac等命令进行编译和执行。

    如果一个项目还需要引用第三方的jar文件,那么上面的架构过程将会变得复杂。如果我们还希望将项目打包部署,使用到的命令又会多很多,如下:

    jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名
    

    以上是一个Java打包的指令。看着是不是很头疼,有种感觉:“这是什么鬼~,这么复杂!”。那么,有没有简单的方式呢?有,Maven就可以简化上面的构建过程。比如上面的所有步骤,Maven仅仅只需要一条指令就可以完成:

    mvn install   //就是这么简单
    

    二、IDE和Maven

    导读:看了上面的叙述之后,有同学可能会说“我平时也不会使用Java命令来构建项目啊,直接使用IDE(比如eclipse)就行了啊”。那么为什么还要使用Maven呢,难道是重复的轮子?
    

    IDE确实能帮助我们简化项目从创建、编译、测试、打包、部署的全过程。但是有一个非常严重的问题,比如teamA习惯使用intellij idea,teamB习惯使用eclipse,有一个项目本身是由teamA负责开发,后面因为某些原因,换成teamB开发。首先,intellij idea的项目是不能直接在eclipse中使用的,这样要么teamB学习intellij idea,要么将idea项目转成eclipse格式。不管是哪种方式,都非常耗时,还容易出错,都是不可取的~ 那有没有办法能解决这个问题呢?有,Maven就可以解决这个问题。

    Eclipse和Intellij idea都有Maven的插件,支持使用Maven构建项目。如果团队使用Maven构建项目,那么不论是否有IDE、或者不论IDE是什么,都不会出现因为换IDE导致的项目结构变化的问题。

    这么说来,Maven倒是成为了一个项目构建的标准或者规范。

    三、其他构建工具

    其实,除了Maven之外,还有很多其他类似的构建工具,比如Ant、Gradle等。

    1、Ant是比较早的Java构建工具,但是Ant没有依赖管理,需要程序员自己管理或者借助其他工具管理(就是没有Maven方便)。

    2、至于Gradle,是一个基于Ant和Maven基础之上发展而来的优秀的构建工具。Gradle更简洁、处理依赖冲突的时候更智能。但是目前很多企业级Java项目仍旧是采用Maven构建的,所以作为一个Java程序员,掌握Maven的使用是必要的。不过,Google的Android项目,更多的是使用Gradle进行项目构建(比如AndroidStudio就是默认采用Gradle构建项目)。对于Android程序员而言,Gradle更熟悉一些。

    展开全文
  • Angular6项目构建

    千次阅读 2018-05-12 10:35:49
    Angular6项目构建 安装Nodejs长期支持版本(LTS) 设置npm淘宝代理: npm config set registry https://registry.npm.taobao.org npm install -g @angular/cli ng new projectName –sass ng serve –open ...
  • Maven与Gradle项目构建工具

    千次阅读 2019-06-11 07:15:17
    项目构建管理工具Maven和Gradle的介绍以及常见问题记录!^_^
  • QtCreator修改项目构建目录

    万次阅读 2018-06-09 10:58:55
    QtCreator修改项目构建目录 使用QtCreator编译Qt项目时,如有需求修改编译过程文件(即Makefile、.o、.exe等文件)存放目录,简单在工具–&gt;选项–&gt;构建和运行中修改Default build directory是不会...
  • Gradle学习(六)——多项目构建

    千次阅读 2017-12-22 18:43:09
    只有一个的构建文件和资源层级的通常是很小的项目,很少有一个超大而且还是不可分割的项目。把一个项目拆分成几个相互依赖的小项目更容易有助于理解,相互依赖很重要,...多项目构建的结构多项目构建的结构可以能有多
  • Android项目构建Apk包流程

    万次阅读 2018-01-31 14:51:03
    好久都没有写博文了,主要是现在的工作重点是前端开发了,最近在学习webpack、weex等前端知识,说起weex,一直都在填坑中,目前还没爬出来了!...所以,本文再次详细描述下,Android项目构建Apk包流程。 一. 前...
  • Gradle多项目构建并将项目导入到Eclipse
  • Android - Gradle项目构建依赖

    千次阅读 2015-02-08 08:43:22
    Gradle项目构建依赖本文地址:http://blog.csdn.net/caroline_wendyAndroid使用Gradle构建时,由于模块之间的依赖关系,和Gradle升级的兼容性,会导致异常,常见的问题:(1) Error: No such property: target for ...
  • Jenkins配置项目构建后的钉钉通知

    千次阅读 2020-06-16 13:40:42
    Jenkins配置项目构建后的钉钉通知 首先在任意一个钉钉群里创建自定义的钉钉机器人,然后能够看到钉钉开放的webhook 复制webhook Jenkins上安装钉钉插件–Dingding[钉钉] url一般默认已经有了,webhook是token等号...
  • vue项目构建-打包-发布--简易demo

    千次阅读 2017-12-06 18:24:51
    vue项目构建 打包发布
  • jenkins项目构建成功后无法发送邮件

    千次阅读 2019-04-28 17:38:10
    系统配置中配置了所有的邮件配置,还是无法在项目构建成功后发送邮件。网上有找过一些方法解决的方法,说是定义发送成功时的要增加recipient List,这个我也增加了还是无法收到。关键是测试邮件发送时能发送成功。 ...
  • Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户。 role rolename="admin-gui"/> role rolename="admin-script"/...
  • App打包原理——Android项目构建过程

    千次阅读 2018-06-25 10:00:07
    从开发者直观感受上来说,项目构建就是从Android Studio 点击'run'到生成apk之间的过程。今天我们讲解下这个过程中,用到的构建工具和构建的过程。一)如下是一个apk解压后的目录,我们先有个印象,后面会提到每个...
  • Vue项目构建

    千次阅读 2018-07-26 17:49:37
    1.通过命令安装vue-cli(脚手架),下面两个命令相同 ...2.通过命令初始化项目(weixin是项目名称,可以修改) npm init webpack weixin //执行完上面命令后会出现一下选择 ? Project name weixin //项目...
  • vue + iview项目构建

    万次阅读 多人点赞 2018-06-24 12:58:48
    最近在着手搭建自己的个人博客,确定技术栈为...把自己搭建项目的过程写出来,方便自己查阅,也供大家学习。 vue.js官网 iview vue-cli PS:vue.js有著名的全家桶系列,包含了vue-router,vuex, vue-resou...
  • jenkins_windows(七):SVN自动触发项目构建的配置

    千次阅读 热门讨论 2019-08-31 11:42:17
    在前一篇博客中详细介绍了如何通过github的webkook功能实现push到github代码仓库后,自动触发jenkins项目构建的流程,实际工作中还有用svn进行代码管理,本文具体介绍一下svn触发项目构建的具体配置,原理和github...
  • 第一章 Zephyr项目构建演示

    千次阅读 2016-03-05 14:58:34
    附Zephyr研究社区... 第一章 Zephyr项目构建演示 一、环境搭建 1、系统环境 系统环境 Linux version 4.2.0 (root@localhost) (gcc version 5.2.0 (GCC) ) #9 SMP Fri
  • 说说几种项目构建工具

    千次阅读 2010-06-02 22:12:00
    一提到项目构建, 对于Java开发人员来说, 最先跃入脑海的自然当属ANT, 所以, 就先从俺ANT的经历开始... 1. ANT先行要说当年我的那个ANT用法,真的不是啥名门正派的用法,更多的是为了避免过多的重复劳动而已, ...
  • 目录 一、工具下载与安装 ...二、C++及Qt项目构建 1. 基于VS构建Qt项目 2. 基于Qt Creater构建,在VS中使用 用Qt Creater构建项目 用VS开发Qt Creater生成的项目 3. 基于Cmake构建 用CMake-Gui构建 ...
  • 前端笔记1.1 项目构建

    万次阅读 2018-10-04 22:34:31
    为了能够保证前端项目安全的实施,一般会将前端的项目单独通过nodejs进行项目构建。 这里必须先安装一个nodejs的开发环境。 https://nodejs.org/zh-cn/download/ 可以从上面的地址根据自己的操作系统进行...
  • h5项目构建

    千次阅读 2016-02-29 18:02:08
    sudo npm start sudo npm update sudo npm run build
  • Qt项目构建路径问题

    千次阅读 2017-11-01 16:23:05
    解决办法:上一次Qt项目下的构建目录是本次项目生成文件的存放路径,所以要改变存放路径,需要先改变路径,然后保存所有文件,之后关闭Qt,再打开工程,进行运行。要删除.uer文件,删除路径依赖,然后重新整
  • 尽管我们可以仅使用单个组件来创建可工作的...倘若Gradle项目拥有多于一个组件,我们就将其称之为多项目构建(multi-project build)。 这篇教程描述了如何使用Gradle创建一个多项目构建。 我们先来看一看Gradle构建
  • electron 完整项目构建过程

    万次阅读 2017-12-01 17:14:48
    前段时间因为项目需要,简单了解了一下electron,加入了electron的开发群组,偶尔能在群里帮助小伙伴解决一些问题,觉得很开心。 但同时也发现小伙伴们的问题有几个比较常见,而官方文档又比较生涩且没有例子可参考...
  • npm install cross-env --save-dev

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,046,387
精华内容 418,554
关键字:

项目构建