Maven命名规范:32位与64位以及Windows与Linux的区别

5
我有一个库,它有4个不同的版本:32位和64位的Windows,以及32位和64位的Linux。我正在尝试弄清楚在上传到Maven仓库时给每个库分配什么名称。目前为止,我的命名方案如下:
  <!--windows 32bit -->
  <groupId>com.lib-name.win</groupId>
  <artifactId>lib-name</artifactId>
  <classifier>x86<classifier>
  <version>10</version>

  <!--windows 64bit -->
  <groupId>com.lib-name.win</groupId>
  <artifactId>lib-name</artifactId>
  <classifier>x86-64<classifier>
  <version>10</version>

  <!--linux 32bit -->
  <groupId>com.lib-name.nix</groupId>
  <artifactId>lib-name</artifactId>
  <classifier>x86<classifier>
  <version>10</version>

  <!--linux 64bit -->
  <groupId>com.lib-name.nix</groupId>
  <artifactId>lib-name</artifactId>
  <classifier>x86-64<classifier>
  <version>10</version>

在Maven中,是否有一种更标准的方式来命名JAR包?或者我现在的做法是正确的吗?


我不知道在这个领域是否有任何惯例。我猜你只需要关心用户明白他需要使用哪个库就可以了 :) - Andrew Logvinov
谢谢!我在考虑是否将所有4个版本的groupId和artifactId设置为相同(因为它们实际上是相同的东西),并使用4个不同的分类器(x86-win,x86-64-win,x86-nix,x86-64-nix)更为合适。想知道这两种方式是否存在任何缺点。 - fo_x86
只使用一个groupIdartifactId的想法也不错。 - Andrew Logvinov
2个回答

3
http://maven.apache.org/pom.html: 分类器: 分类器允许区分构建自相同POM但内容不同的工件。它是一些可选且任意的字符串,如果存在,则会附加到版本号后面,跟随工件名称。
举个例子,考虑一个项目,该项目提供针对JRE 1.5的工件,同时还提供支持JRE 1.4的工件。第一个工件可以带有分类器“jdk15”,第二个工件可以带有分类器“jdk14”,以便客户端可以选择使用哪一个。
后一段表明他们打算使用分类器来执行您想要完成的任务。
然而,在我的经验中,我遇到的大多数项目都会为项目的每个特性发布单独的工件。我个人更喜欢这种方法,但这是个人口味问题。

你能给我一个“为每个项目分别创建工件”的例子吗?我很想知道解决这个问题的流行方式是什么。 - fo_x86
首先想到的是BouncyCastle,它为不同的Java版本提供了各种变体:http://repo2.maven.org/maven2/org/bouncycastle/ - Duncan Jones
这正是我在寻找的例子 :) 谢谢! - fo_x86

0

我认为使用相同的组和构件ID与不同的分类器是最干净的方法。想想Maven源插件如何发布源JAR文件(它只是另一个分类器)。也可以看看这个链接:

为不同的配置使用一个构件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接