当我从我的存储库(例如文件系统)解析工件时,我使用了两种工件模式:
<artifact pattern="${location}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
<artifact pattern="${location}/[organisation]/[module]/[revision]/[artifact]-[revision]-[type]s.[ext]"/>
第一个用于jar文件,第二个用于源或其他类型的工件。 我希望能够以相同的方式发布工件,但我不知道如何。
仅使用上面的模式,发布任务似乎只考虑第一个,因此删除了类型。如果多个工件具有相同的名称和扩展名,则会覆盖它们。
如果我只使用第二个模式,那么对于jar工件,它会产生$ {artifact} - $ {revision} -jars.jar,这真的很难看。
最后,似乎可以在模式中包含可选部分,例如:
<artifact pattern="${location}/[organisation]/[module]/[revision]/[artifact]-[revision](-[type]s).[ext]"/>
但只有当类型为null或为空时,才会省略 - [type]部分,并且我希望类型保持为“jar”,在这种情况下,不会省略该部分。
还有其他方法吗?
答案 0 :(得分:1)
为什么不将ivy.xml
个文件用于工件?您应该创建ivy.xml
并将它们放在jar
文件附近的模块文件夹中。 ivy.xml
示例:
<ivy-module version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="com.organisation" module="foo" revision="1.0"/>
<publications>
<artifact name="foo"/>
<artifact name="foo-sources" type="source" ext="zip"/>
</publications>
</ivy-module>
然后你应该在你的解析器中定义常春藤模式:
<ivy pattern="${location}/[organisation]/[module]/[revision]/ivy.xml"/>
现在,如果您使用<dependency org="com.organisation" name="foo" rev="1.0"/>
,您将获得ivy.xml
中描述的所有工件。只有way可以选择所需的工件。
答案 1 :(得分:1)
不是真正的解决方案,但更好的方法是:
<artifact pattern="${location}/[organisation]/[module]/[revision]/[type]s/[artifact]-[revision].[ext]"/>
答案 2 :(得分:0)
我也一直在努力。 我找到了解决方案,你可以使用:
[artifact](-[classifier]).[ext]
-classifier在源/ javadoc-jar上的jar上将为null / empty,它包含-sources / -javadoc.jar
我知道它已经有一段时间了,但我通过谷歌找到了这个问题。因此,对于任何未来的人来说,我认为这将是有益的。