创建依赖于RESTlet的maven工件 - 如何处理版本

时间:2014-01-23 12:16:52

标签: java maven restlet

我正在创建一个库,它最终将成为一个可供其他项目使用的maven工件。它使用RESTlet作为REST客户端。

虽然我的工件/库是平台中立的,但它具有的依赖关系却不是。 RESTlet有多个版本,一个用于GAE,一个用于JEE等。每个都有自己的组ID,org.restlet。 gae 例如:

<dependency>
   <groupId>org.restlet.gae</groupId>
   <artifactId>org.restlet</artifactId>
   <version>2.2-M6</version>
</dependency>

理想情况下,我希望库的用户能够自己指定确切的RESTlet版本。打包我的库的最佳方法是什么,这会给用户带来最少的麻烦?

我看了一遍,但找不到这种事情的指南/最佳实践。

1 个答案:

答案 0 :(得分:1)

我有同样的确切情况。我有一个依赖Restlet的java lib,由我的GAE服务器和我的Android客户端使用。

对于lib,我将restlet依赖项标记为可选,并指定“提供”范围,因为它由包含应用程序提供。我在构建lib时使用了jse版本,但我认为你使用哪一个并不重要;因为界面是一样的。

<dependency>
  <groupId>org.restlet.jse</groupId>
  <artifactId>org.restlet</artifactId>
  <version>${restlet.version}</version>
  <optional>true</optional>
  <scope>provided</scope>
</dependency>

对于我的Android客户端,我指定了android版本:

<dependency>
  <groupId>org.restlet.android</groupId>
  <artifactId>org.restlet</artifactId>
  <version>${restlet.version}</version>
</dependency>

对于我的GAE服务,我指定了gae版本:

<dependency>
  <groupId>org.restlet.gae</groupId>
  <artifactId>org.restlet</artifactId>
  <version>${restlet.version}</version>
</dependency>