2013-04-29 260 views
3

我已經制作了一個小的android庫,我希望在中央maven存儲庫上提供。我想請按下列執行mvn發佈:執行

https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide

似乎一切,直到我到了MVN發行工作正常步驟:執行階段。然後我得到以下錯誤。

[INFO] /Volumes/AndroidDisk/persistent-cookies/target/checkout/AndroidManifest.xml:5: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon'). [INFO] /Volumes/AndroidDisk/persistent-cookies/target/checkout/AndroidManifest.xml:5: error: Error: No resource found that matches the given name (at 'label' with value '@string/app_name'). [ERROR] Error when generating sources. org.apache.maven.plugin.MojoExecutionException: at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:418) at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute(GenerateSourcesMojo.java:107) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: com.jayway.maven.plugins.android.ExecutionException: ANDROID-040-001: Could not execute: Command = /bin/sh -c cd /Volumes/AndroidDisk/persistent-cookies/target/checkout && /Users/sam/Development/android-sdk-macosx/platform-tools/aapt package -m -J /Volumes/AndroidDisk/persistent-cookies/target/checkout/target/generated-sources/r -M /Volumes/AndroidDisk/persistent-cookies/target/checkout/AndroidManifest.xml --auto-add-overlay -I /Users/sam/Development/android-sdk-macosx/platforms/android-17/android.jar, Result = 1

所以它似乎有問題找到res文件夾。當我執行mvn clean install時,該項目可以正常工作。

的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> 
    <groupId>com.github.samddman</groupId> 
    <artifactId>persistentcookiestore</artifactId> 
    <version>1.0.1-SNAPSHOT</version> 
    <packaging>apklib</packaging> 
    <name>persistentcookies</name> 
    <description>A cookie store which persists cookies across app restarts</description> 
    <parent> 
     <groupId>org.sonatype.oss</groupId> 
     <artifactId>oss-parent</artifactId> 
     <version>7</version> 
    </parent> 
    <url>https://github.com/samddman/persistent-cookies</url> 
    <licenses> 
     <license> 
      <name>GNU General Public License, version 2 (GPL-2.0)</name> 
      <url>http://opensource.org/licenses/gpl-2.0.php</url> 
     </license> 
    </licenses> 
    <scm> 
     <url>[email protected]:samddman/persistent-cookies.git</url> 
     <connection>scm:git:[email protected]:samddman/persistent-cookies.git</connection> 
     <developerConnection>scm:git:[email protected]:samddman/persistent-cookies.git</developerConnection> 
    </scm> 
    <dependencies> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20090211</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.pivotallabs</groupId> 
      <artifactId>robolectric</artifactId> 
      <version>1.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.2</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>android</groupId> 
      <artifactId>android</artifactId> 
      <version>4.2.2_r2</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
    <!--   <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.3.2</version> 
       <configuration> 
        <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
        <sdk> 
         <platform>17</platform> 
        </sdk> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin>  --> 
      <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.3.2</version> 
       <configuration> 
        <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
        <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
        <resourceDirectory>${project.basedir}/res</resourceDirectory> 
        <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
        <sdk> 
         <platform>17</platform> 
        </sdk> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.3</version> 
       <executions> 
        <execution> 
         <phase>initialize</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.basedir}/res</outputDirectory> 
          <resources> 
           <resource> 
            <directory>${project.basedir}/src/templates/res</directory> 
            <targetPath>${project.basedir}/res</targetPath> 
            <filtering>false</filtering> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

我在做什麼錯?

回答

1

我使用Maven構建一個跨平臺項目,我的android pom.xml文件具有以下插件,用於從核心項目中獲取資源。我使用mvn clean install來構建輸出。我在某些計算機上遇到配置問題,而且在構建之前我必須手動將資源複製到我的android項目文件夾。

目前這個配置正在爲我工​​作。

<plugins> 
<plugin> 
    <groupId>com.pyx4j</groupId> 
    <artifactId>maven-junction-plugin</artifactId> 
    <version>1.0.3</version> 
    <!-- generate a symlink to our assets directory in the proper location --> 
    <configuration> 
     <links> 
     <link> 
      <src>${basedir}/../assets/src/main/resources/assets</src> 
      <dst>${basedir}/assets</dst> 
     </link> 
     </links> 
    </configuration> 
    </plugin>  
    <plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    <version>${android.maven.version}</version> 
    <configuration> 
     <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
     <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
     <resourceDirectory>${project.basedir}/res</resourceDirectory> 
     <sdk> 
     <platform>16</platform> 
     <path>C:\sdks\android-sdks</path> 
     </sdk> 
     <deleteConflictingFiles>true</deleteConflictingFiles> 
     <undeployBeforeDeploy>true</undeployBeforeDeploy> 
     <jvmArguments> 
     <jvmArgument>-Xmx1024m</jvmArgument> 
     </jvmArguments> 
     <dex> 
     <jvmArguments> 
      <jvmArgument>-Xmx1024m</jvmArgument> 
     </jvmArguments> 
     </dex> 
    </configuration> 
    <extensions>true</extensions> 
    </plugin> 
</plugins> 
0

您的整個項目是否已正確檢入SCM? release:執行從SCM標籤發佈:準備創建,所以如果任何文件意外未被檢查,他們將在發佈過程中丟失:執行。

您可以手動檢查目標/檢出文件夾以查看是否存在所有內容,甚至嘗試手動調用目標/檢出中的mvn clean包。