我对Maven Snapshot的含义以及为什么要构建一个它有点困惑?
我正在使用maven-assembly插件来创建我的应用程序的jar,包括其依赖项如下:
<assembly>
<id>macosx</id>
<formats>
<format>tar.gz</format>
<format>dir</format>
</formats>
<dependencySets>
<dependencySet>
<includes>
<include>*:jar</include>
</includes>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
Run Code Online (Sandbox Code Playgroud)
(我省略了一些与问题无关的其他内容)
到目前为止,这工作得很好,因为它创建了一个lib包含所有依赖项的目录.但是,我最近添加了一个新的依赖项,其范围是system,并且它不会将其复制到lib输出目录.我必须遗漏一些基本的东西,所以我打电话求助.
我刚刚添加的依赖项是:
<dependency>
<groupId>sourceforge.jchart2d</groupId>
<artifactId>jchart2d</artifactId>
<version>3.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/external/jchart2d-3.1.0.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我能够包含此依赖项的唯一方法是将以下内容添加到assembly元素:
<files>
<file>
<source>external/jchart2d-3.1.0.jar</source>
<outputDirectory>lib</outputDirectory>
</file>
</files>
Run Code Online (Sandbox Code Playgroud)
但是,这会强制我在重命名此jar时更改pom和程序集文件(如果有的话).而且,这似乎是错的.
我有试过<scope>runtime</scope>在dependencySets和<include>sourceforge.jchart2d:jchart2d</include>没有运气.
那么如何system在maven 2中将scoped jar 包含到汇编文件中?
非常感谢
这听起来应该很容易,但我还没有找到答案.如果我使用mvn install安装工件,我该如何删除所述工件?我尝试使用依赖:purge-local-repository,但它只删除依赖项 - 而不是实际的工件.
有任何想法吗?如果有帮助,我正在使用maven 2.2.1.
编辑:我知道类似的问题,但我不满意删除我的整个.m2 repo只是为了删除单个SNAPSHOT依赖.另外,正如我所提到的,purge-local-repository不起作用,因为它似乎只是删除依赖项而不是实际的工件.
编辑2:我可能不太清楚.考虑这个例子.我有一个名为my-artifact的SNAPSHOT工件.my-artifact有两个依赖项:my-dependency-one和my-dependency-two.我想写一个脚本,删除所有三个,而不必解析pom.xml文件.换句话说,我想清除my-dependency-one,my-dependency-two和AND -artifact,而不必显式输入maven,我想删除my-artifact.
在"重复问题"的答案中,它建议进入并手动删除.m2仓库中的工件.这不是这个问题的答案,因为脚本在执行maven命令时不知道组或工件名称.我想要一些类似于依赖的东西:purge-local-repository,除了它不仅要删除依赖项,还要删除工件本身.
我猜测基于评论中的混淆,这是不可能的.如果不是那个是可以接受的答案.