美文网首页
iOS Developer的全栈之路 - 创建工程

iOS Developer的全栈之路 - 创建工程

作者: 西西的一天 | 来源:发表于2019-11-10 23:39 被阅读0次

这是开篇的第一篇文章,从创建工程开始,之后会逐步完善丰富,希望自己可以坚持做下去。整体会完成一个商城,后端的核心技术栈将选择SpringBoot,并采用前后端分离的方式进行开发。
环境配置如下所

  1. IDE:Intellij Idea
  2. OS:Mac
  3. Java:Java 8

主工程

起项目的方式,这里选择了通过Intellij创建一个空的Maven工程,当然也可以使用start.spring.io快速生成一个Spring Boot的模板工程。

start project.png

填写group-id以及artifact-id,即可完成创建创建。这里的项目名称为foodie,它将作为整个项目的根工程(parent),可以理解为Xcode的workspace,而具体的功能将以子模块的方式存在于根工程中,类似Xcode中的project。

项目的配置存在于pom文件中,描述项目以及依赖管理和打包方式等等。刚创建好的pom文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<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.iossocket</groupId>
    <artifactId>foodie-dev</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>

</project>

大部分都为模块信息,构建方式packaging这里选择了pom,稍后会对它进行解释(可选的方式有jarwarpom

子模块

依次建立子模块common,pojo,mapper,service,api。其中common模块中会存放一些工具类可被各个模块使用的共有代码;pojo顾名思义,存放项目中需要的entity;mapper,由于项目会使用mybatis作为ORM,mapper中存放db和entity的映射关系;service就比较常规咯,业务代码;api中则是controller类,各个request的入口。

在添加这些模块后,Intellij会自动更新根项目中的pom:

<?xml version="1.0" encoding="UTF-8"?>
<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.iossocket</groupId>
    <artifactId>foodie-dev</artifactId>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>foodie-dev-common</module>
        <module>foodie-dev-pojo</module>
        <module>foodie-dev-mapper</module>
        <module>foodie-dev-service</module>
        <module>foodie-dev-api</module>
    </modules>

    <packaging>pom</packaging>

</project>

多出来的modules标签下的便是新添加的各个子模块,子模块在父工程中是平级的。我们希望的依赖关系是这样的api -> service -> mapper -> pojo -> common,子模块间要相互引用,需要在子模块的pom中进行声明。用api需要依赖service来举例说明一下,其他的依赖声明方式完全相同:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>foodie-dev</artifactId>
        <groupId>com.iossocket</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>foodie-dev-api</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.iossocket</groupId>
            <artifactId>foodie-dev-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

我们可以看到这里的dependencies标签,下面就可以声明它的所有依赖,现在只有一个,可以根据需要添加其他的依赖。但需要说明一点的是,如果api要使用common里的代码,就不需要再api的pom中添加common的依赖,因为依赖会被传播的,想想我们的Cocoapods也是相同的。

在依赖声明完成之后,需要在跟项目中执行mvn的install指令,可以在intelij的右侧面板中点击执行。

发现在install后,控制台会报一个warning:Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!。解决起来也很简单,只需要在根项目的pom中添加如下声明即可。

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

在下一章中,我们会开始数据库相关的内容

相关文章

网友评论

      本文标题:iOS Developer的全栈之路 - 创建工程

      本文链接:https://www.haomeiwen.com/subject/pjczbctx.html