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