2015-06-09 25 views
0

神器提供了一些API,为客户有了它,这些都是其在INTERAL代码库实现只有几Java接口交互...建筑API只考虑到我们的行家谟行家

现在,如果我们只是建立了罐子,发布它任何人都可以看到我们用于实现的内部类,但是我们只需要发布几个Java接口(以及几个DTO类可能)...

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

prupose是为了限制被其他球队的代码可能被滥用......

+0

您可以拆分项目进入多个模块,如: 项目的API,项目-JAR,项目的EJB,项目战争等 – novy1234

+0

是的,但是,吸,想象我”将只有几个接口和dto类aproject ...我会这样做,如果没有其他选择是可能的... 我希望有一个解决方案只是pom.xml或与gradle也许? – vach

+0

为什么它很烂?这是maven应该做的。除了创建项目API将有助于解耦您的项目。未来,与第三方共享API也将变得更加容易。 – plastique

回答

2

最好是使Maven的单独的模块代表喜欢你的模块:

project-api 

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

project-impl 

一个实施等 以上使测试更容易等都是不错的选择与问候的关注点分离。

+0

谢谢,这对于大型项目来说很常见吗?我的项目变得太大了,许多小团队创建了愚蠢的依赖关系,现在很难摆脱......因此我想消除他们将使用他们不应该使用的源代码的可能性。 – vach

+1

我正在从事320个模块/ 120开发人员的项目,是的,我们完全按照您所描述的方式来防止耦合。 – khmarbaise

+0

@vach我不知道这是如何帮助你防止其他团队滥用代码,因为你需要为这两个模块提供罐子。我遇到了类似的情况,我必须为包含接口的API构建一个单独的模块。但是我没有完全理解这个概念,以及它在与多个团队合作时的帮助。 –

1

你的问题是关于保护代码而不是一般的maven。你可以有多模块maven项目,但任何人都可以下载并解压缩它。 一些想法作为Java并有内置的机制来支持这一点,但也有变通办法......一些想法..

  1. 在打包项目的罐子,不要在罐子put.java类/建造。 那么代码可以反编译回到java,但至少你不要给给.java类开始。
  2. 您可以使用 各种可用选项来模糊您的代码。读取位here ...
  3. 在外部, 将您的api公开为Web服务,您在其中定义了 请求/响应的合同。没有人能看到你的代码...
+0

我知道你可以用罐做什么,只有那里有类文件,我知道混淆... 我问的是我可以建立另一个工件client-api.jar将只包含几个接口和它们所具有的任何依赖关系(dto类)...该jar不应包含任何其他接口... – vach

+0

我不想隐藏我的代码,想象一下双g项目很多团队正在开发它,并开始在他们的项目中添加大量的依赖项(有时会循环)......并开始使用他们永远不会使用的类,但复制或重新实现它们自己... – vach