我的情况几乎与this issue中公开的情况相同,只是使用-DincludeScope=runtime
的建议解决方案对我不起作用:
我的pom看起来像:
<dependencies>
<dependency>
<groupId>my.company.group</groupId>
<artifactId>common</artifactId>
<version>4.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>my.company.group</groupId>
<artifactId>common</artifactId>
<version>4.0.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
您可能已经注意到,我们正在使用一个为该项目提供通用类的通用项目(以及其他)。 最近在将通用测试类放入此项目时出现问题,因此需要第二个jar存档用于测试目的。在我看来,它应该像魅力一样:两个jar文件都有不同的名称和范围。
通过mvn clean compile
创建.war存档很好:创建的war存档不包含测试库。
但是使用mvn clean compile dependency:copy-dependencies -DoutputDirectory=./libPath -DincludeScope=runtime jar:jar
复制依赖项似乎没有考虑范围。正如其他一些帖子所指出的那样,param -DexcludeScope=test
是无用的,因为它排除了每个范围。
我还尝试在依赖声明中使用classifier
属性,并在运行maven时使用-DexcludeClassifiers=test
而没有显着效果。
在我的mave电话会议或我的pom配置中,是否有我遗漏的东西?
(Fyi:maven版本是3.0.5,在java 7上运行)
答案 0 :(得分:0)
最后,经过一些搜索后,解决方案正确理解了maven生命周期。
长话短说:我修改了maven调用,而不是pom配置(在final String[] months = new String[] { "Jan", "Feb", "Mar", "Apr" };
IAxisValueFormatter formatter = new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return months [(int) value];
}
@Override
public int getDecimalDigits() { return 0; }
};
XAxis xAxis = mLineChart.getXAxis();
xAxis.setGranularity(1f);
xAxis.setValueFormatter(formatter);
之前使用test-compile
阶段):
compile
阅读maven documentation,默认构建阶段流程如下:
目标依赖项默认绑定到mvn clean test-compile dependency:copy-dependencies -DoutputDirectory=./libPath -includeScope=runtime compile jar:jar
阶段,在我的第一次尝试中,我将其绑定到process-sources
阶段。我认为我的问题来自这样一个事实:当这个目标被执行时,测试类还没有被编译,因此没有被标记为&#39;就这样。
在compile
之前运行test-compile
阶段(并在前者上绑定复制目标)允许识别测试类,因此compile
参数的值为有效地使用了。
话虽如此,这几乎是纯粹的经验性理解。如果有人有更多的理论解释或文档,我很乐意听到它。