问题描述
在尝试编译android项目时,我从Jenkins控制台获得了以下输出:只是注意到我在主班上没有做任何改变这是jenkins控制台:
I got this output from Jenkins console while trying to compile an android project:just notice that I didn't make any change on the main Classthis is the jenkins console:
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.701s
[INFO] Finished at: Thu May 29 17:56:45 CEST 2014
[INFO] Final Memory: 24M/491M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving /var/opt/jenkins/workspace/Android-Project-App/trunk/pom.xml to com.proj.android.project.mobile/project-android/0.0.1-SNAPSHOT/project-android-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/opt/jenkins/workspace/Android-Project-App/trunk/assets/build/project-android.apk to com.proj.android.project.mobile/project-android/0.0.1-20140529.155643-5/project-android-0.0.1-20140529.155643-5.apk
[JENKINS] Archiving /var/opt/jenkins/workspace/Android-Project-App/trunk/assets/build/project-android.jar to com.proj.android.project.mobile/project-android/0.0.1-20140529.155643-5/project-android-0.0.1-20140529.155643-5.jar
channel stopped
Archiving artifacts
ERROR: No artifacts found that match the file pattern "**/target/*.apk". Configuration error?
ERROR: ‘**/target/*.apk’ doesn’t match anything: ‘**’ exists but not ‘**/target/*.apk’
Build step 'Archive the artifacts' changed build result to FAILURE
IRC notifier plugin: Sending notification to: #jenkins
Finished: FAILURE
这是我的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.proj</groupId>
<artifactId>android</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<groupId>com.proj.android.project.mobile</groupId>
<artifactId>project-android</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>apk</packaging>
<name>project Android Application</name>
<description>project mobile application for android client</description>
<url>http://maven.apache.org</url>
<issueManagement>
<system>jira</system>
<url>http://www/jira/browse/${jira.project.key}</url>
</issueManagement>
<scm>
<connection>scm:svn:http://svn/android/project-mobile-app/trunk/</connection>
<developerConnection>scm:svn:https://svn/android/project-mobile-app/trunk/</developerConnection>
<url>http://svn/web/wsvn/android/project-mobile-app/</url>
</scm>
<dependencyManagement>
<dependencies>
<!-- Android dependencies -->
<dependency>
<groupId>android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
<version>4.0.3_r2</version>
</dependency>
<dependency>
<groupId>android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
<version>138</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>com.proj.android.sample</groupId> -->
<!-- <artifactId>pdf-viewer-ng</artifactId> -->
<!-- <type>apklib</type> -->
<!-- <version>1.0-SNAPSHOT</version> -->
<!-- </dependency> -->
<dependency>
<groupId>com.proj.project.client</groupId>
<artifactId>project-client</artifactId>
<version>${project-client.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>build</sourceDirectory>
<directory>${project.basedir}/assets/build</directory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<extractDuplicates>true</extractDuplicates>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<properties>
<android.version>4.0.3_r2</android.version>
<android.sdk>15</android.sdk>
<android.emulator.avd>AVD_15_4_0_3</android.emulator.avd>
<jira.project.key>UNIAPPAND-1</jira.project.key>
<junit.version>4.11</junit.version>
<com.proj.project.client>1.0-SNAPSHOT</com.proj.project.client>
</properties>
</project>
我认为我的问题来自目标目录,因为jenkins提到了这一点.我在詹金斯有3个目录:assets,res和src我应该再添加三个文件夹吗?例如libs或target ??
I think my problem come from target directory because jenkins mentioned that.I had 3 directories at jenkins: assets ,res et srcShould I add more then these three folders? for example libs or target ??
推荐答案
归档工件的构建后步骤与您的POM无关.它所做的只是在工作空间文件夹中查找文件,即$WORKSPACE
(也可以通过http://[jenkins-url]/job/[job-name]/ws
进行访问),并将这些文件存档在Jenkin的构建历史记录中.
The Archive Artifacts post-build step does not care about your POM. All it does is look for files in your workspace folder, i.e $WORKSPACE
(also accessible through http://[jenkins-url]/job/[job-name]/ws
) and archives those within Jenkin's build history.
您要存档的文件必须存在于$WORKSPACE
中.从您的配置中,您尝试将**/target/*.apk
存档,这意味着在任何路径下的文件夹target
以及任何文件和扩展名.apk
" .找不到它,因为您的工作区中没有文件夹target
,因此ERROR: ‘**/target/*.apk’ doesn’t match anything: ‘**’ exists but not ‘**/target/*.apk’
The files that you are trying to archive must exist in the $WORKSPACE
. From your configuration, you are trying to archive **/target/*.apk
which means "under any path, folder target
with any file and extension .apk
". It can't find that, since your workspace doesn't have folder target
anywhere, hence the ERROR: ‘**/target/*.apk’ doesn’t match anything: ‘**’ exists but not ‘**/target/*.apk’
在POM文件中,有以下行:<directory>${project.basedir}/assets/build</directory>
这就是确定您生成的文件在何处结束的内容.是[base-dir-of-pom]/assets/build
,而不是target
.
In your POM file, you have the following line:<directory>${project.basedir}/assets/build</directory>
This is what identifies where your built files end up. It is [base-dir-of-pom]/assets/build
, not target
.
此外,形成您的控制台日志:[JENKINS] Archiving /var/opt/jenkins/workspace/Android-Project-App/trunk/assets/build/project-android.apk
这进一步证明了您的.apk
工件实际上位于trunk/assets/build
Also, form your console log:[JENKINS] Archiving /var/opt/jenkins/workspace/Android-Project-App/trunk/assets/build/project-android.apk
Which further proves that your .apk
artifact is in fact located under trunk/assets/build
对于您的归档工件文件模式,您需要使用:**/assets/build/*.apk
For your Archive Artifacts file pattern, you need to use:**/assets/build/*.apk
事实上,您可以只使用:**/build/*.apk
甚至**/*.apk
And as a matter of fact, you could use just:**/build/*.apk
or even**/*.apk
但是问题是:当您已经使用Maven归档工件时,您真的要在Jenkins上归档工件(占用空间)吗?
But the question is: do you really want to be archiving the artifacts on Jenkins (which takes space) when you are already archiving the artifacts with Maven?
这篇关于找不到与文件模式"**/target/*.apk"匹配的工件.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!