Facade
facade 应该怎么设计?
最近暴露给外部使用,由于是历史遗留项目,问题很严重。
facade 引入了很多引用。
纯净性
最好的 facade 应该只有 POJO 和 Interface,不包含任何的三方 jar.
内部系统
如果公司内部有比较成熟的架构,可以统一使用公共的 jar。
保证不能有任何的 jar 冲突,不能有任何的冗余 jar。
版本
- 方式1
一般一个版本是放在一个大的项目下,打包的时候需要把父类 pom 信息排除掉。
然后保证每次记录最新的版本号。
- 方式2
直接将 facade 设计成一个单独的模块,不和当前的项目有依赖。
- 方式3
每次拉取分支的时候,项目都一个唯一的版本号。
开发的时候,使用 XXXX-SNAPSHOT
上线的时候使用 XXXX 的 RELEASE 版本。
封板:当测试完成以后,禁止往分支中提交代码,可能对代码进行封存。
文件配置
setting.xml
在文件中配置仓库的访问权限。
pom.xml
仓库地址
<distributionManagement>
    <repository>
        <id>nexus</id>
        <name>Releases</name>
        <url>http://代码仓库地址/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id>
        <name>Snapshots</name>
        <url>http://代码仓库地址/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>
指定上传 resource
别人可以看到你的注释等信息。
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <!--配置生成源码包-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
发布命令
到指定的模块下
$   mvn clean deploy
