根据文档,Maven版本:执行目标检查项目,然后分叉一个新的Maven实例来构建它.由于某种原因,forked实例似乎忽略了用户settings.xml,这导致我的情况出错,因为该文件具有用于在父pom中组成存储库URL的属性的定义.
用户的settings.xml
"nexus"配置文件中始终处于活动状态的属性的定义.
<profiles>
<profile>
<id>nexus</id>
<properties>
<dist.url>http://host.com/nexus/content/repositories</dist.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
Run Code Online (Sandbox Code Playgroud)Parent的pom.xml
使用定义的属性来组成存储库的URL.
<distributionManagement>
<repository>
<id>nexus</id>
<url>${dist.url}/releases</url>
</repository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)执行命令:
mvn release:perform
Run Code Online (Sandbox Code Playgroud)输出(表示已成功检出,构建,测试和打包项目):
[INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD FAILURE
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Total time: 3.659s
[INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012
[INFO] [INFO] Final Memory: 21M/307M
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [WARNING] The requested profile "nexus" could not be activated because it …Run Code Online (Sandbox Code Playgroud)附加程序(参见最后)在执行时产生以下输出:
..........
with sleep time of 0ms
times= [1, 1, 1, 0, 1, 1, 0, 1, 1, 0]
average= 0.7
..........
with sleep time of 2000ms
times= [2, 2, 2, 2, 2, 1, 2, 2, 2, 2]
average= 1.9
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,执行完全相同的代码,该代码将重复地从在程序开始时实例化的Random对象获取下一个值.首先执行的预热方法应该在实际测试开始之前触发任何类型的JIT otimization.
任何人都可以解释这种差异的原因吗?到目前为止,我每次都能在我的机器上重复这个结果,这是在带有java 7的多核Windows系统上执行的.
一个有趣的事情是,如果执行测试的顺序是相反的,也就是说,如果我们在没有延迟的循环之前运行具有延迟的循环,那么时序更相似(没有延迟循环实际上需要更长的时间) ):
..........
with sleep time of 2000ms
times= [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
average= 2.0
..........
with sleep time of 0ms
times= [2, 3, 3, 2, 3, 3, 2, 3, 2, …Run Code Online (Sandbox Code Playgroud)