用maven建造api唯一的神器

时间:2015-06-09 07:59:27

标签: java maven dependencies modularity

鉴于我们的maven projet为客户端提供了一些与它交互的a​​pi,那些只是很少的java接口,它们是在内部代码库中实现的......

现在,如果我们只是构建jar并发布它,任何人都可以看到我们用于实现的内部类,但是我们只需要发布很少的java接口(可能还有很少的DTO类)......

是否可以准确选择我们想要为哪些java文件构建jar并创建两个工件,如(product.jar / war和product-api.jar)

Prupose是为了限制其他团队可能滥用代码......

2 个答案:

答案 0 :(得分:2)

最好是在Maven中创建单独的模块,代表您的模块:

project-api

只包含接口,可以由其他人单独使用。

project-impl

一个实施等 以上使得测试更容易等,在关注点分离方面是一个很好的选择。

答案 1 :(得分:1)

您的问题是关于保护代码而不是maven。您可以拥有多模块maven项目,但仍然有人可以下载并取消它。 很少有人认为Java确实有内置的机制来支持这个,但有一些解决方法...一些想法......

  1. 当你将项目打包为jar时,不要在jar / build中放入.java类。 那么代码可以反编译回java但至少你不要 给.java类开始。
  2. 你可以用你的代码进行模糊处理 各种可用选项。读取位here ...
  3. 在外部, 将您的api公开为您为其定义合同的Web服务 请求/响应。没有人能看到你的代码......