我在Spotify's docker-client的主结帐上运行mvn release:prepare -Darguments="-Dmaven.test.skip=true -DskipTests"
。但我无法获得maven的发布插件来跳过测试。为什么在这种情况下,maven不尊重CLI标志?
我也很好奇是什么导致发布插件执行surefire-plugin。 pom.xml
中没有指定surefire-plugin。
mvn --version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T12:29:23-05:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.2", arch: "x86_64", family: "mac"
答案 0 :(得分:73)
这对我有用。我想要准备和执行发布。
mvn clean -DskipTests -Darguments=-DskipTests release:prepare release:perform
答案 1 :(得分:3)
我在pom.xml中使用了以下内容
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
</configuration>
</plugin>
答案 2 :(得分:1)
这适用于Maven 3.6(可能还有一些早期版本)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<arguments>-DskipTests</arguments>
</configuration>
</plugin>
答案 3 :(得分:0)
这是google在此问题上的第一批热门歌曲之一,但没有最可能的解释和解决方案,所以这是我的尝试。
我在运行release:prepare
时遇到与OP相同的问题,其中-DskipTests
通过-Darguments
传递给 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<arguments>-B</arguments>
</configuration>
</plugin>
。深入研究后,我注意到祖父母POM(父母的父母)具有以下配置:
<arguments>-B</arguments>
它实际上具有更多的配置,但是我仅显示与此问题最相关的是arguments
。这是将-B
配置参数硬编码为arguments
,而不是让它读取 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<arguments>$(arguments)</arguments>
</configuration>
</plugin>
属性。为了解决这个问题,我在项目pom中添加了以下内容,它开始起作用:
int selection;
char name2[20], last2[20];
int number1[10],i,count=0;
scanf_s("%d", &selection);
while (selection != 5) {
switch (selection)
{
case 1:
AddContact();
break;
case 2:
DisplayContact();
printf("============================== \n");
break;
void AddContact()
{
int i;
char name[21], last[21];
int number[11];
printf("Enter name: ");
scanf_s("%s",name);
printf("Enter last name: ");
scanf_s("%s", last);
printf("Enter mobile number: ");
scanf_s("%d",number);
printf("CONTACT ADDED\n");
}
void DisplayContact()
{
int i;
char name[21], last[21];
int number[11];
for (i = 0; i < size; i++)
{
printf("Contact ID : %d\n",i+1 );
printf("Name : %s %s\n", name, last);
printf("Mobile: %d\n", number);
printf("\n");
}
答案 4 :(得分:-4)
有两件事。首先,如果你想运行一个版本,你需要运行mvn release:perform
,它真正运行最终版本的步骤,而不是mvn release:prepare
。如果您想跳过mvn release:prepare
中的测试,则应使用mvn -Dmaven.test.skip=true
加上您定义的给定参数。
除了maven-surefire-plugin在default life cylce
中定义