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

Java 创建依赖RESTlet的maven工件-如何处理版本,java,maven,restlet,Java,Maven,Restlet,我正在创建一个库,它最终将成为一个maven工件,可供其他项目使用。它使用RESTlet作为REST客户机 虽然我的工件/库与平台无关,但它所具有的依赖关系却不是。RESTlet有多个版本,一个用于GAE,一个用于JEE等。每个版本都有自己的组id org.RESTlet。GAE例如: <dependency> <groupId>org.restlet.gae</groupId> <artifactId>org.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>

org.restlet.gae
org.restlet
2.2-M6
理想情况下,我希望库的用户能够自己指定确切的RESTlet版本。对我的库进行打包的最好方法是什么,这样对它的用户来说就不会太匆忙了


我找遍了所有地方,但找不到这类事情的指南/最佳实践。

我也有同样的情况。我有一个java库,它依赖于Restlet,由我的GAE服务器和Android客户端使用

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

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

org.restlet.jse
org.restlet
${restlet.version}
真的
假如
对于我的Android客户端,我指定Android版本:

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

org.restlet.android
org.restlet
${restlet.version}
对于我的GAE服务,我指定GAE版本:

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

org.restlet.gae
org.restlet
${restlet.version}

我不确定我是否理解您的问题(因此现在添加为注释而不是答案),但是否可以在这里帮助您?您可以在项目中使用
optional
标记所有restlet依赖项。然后,您的库的用户可以自由定义他们自己对想要使用的restlet版本的依赖关系。这可能是一个很好的修复方法。我来看看。谢谢。这就是我现在使用的方法。尽管该库的用户必须声明附加的依赖项,但这比我必须发布多个版本的库要好得多。谢谢