执行mvn release:perform

3
我制作了一个小型的Android库,希望将其提供到中央Maven仓库。我正在尝试按照此处列出的步骤进行操作。

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

一切似乎都运行正常,直到我到达 mvn release:perform 阶段。然后出现以下错误。

[INFO] /Volumes/AndroidDisk/persistent-cookies/target/checkout/AndroidManifest.xml:5: 错误:找不到与给定名称匹配的资源(在“icon”处使用值“@drawable / icon”)。 [INFO] /Volumes/AndroidDisk/persistent-cookies/target/checkout/AndroidManifest.xml:5: 错误:找不到与给定名称匹配的资源(在“label”处使用值“@string / app_name”)。 [ERROR] 生成源时出错。 org.apache.maven.plugin.MojoExecutionException: 在com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:418) 中生成 在com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute(GenerateSourcesMojo.java:107) 中执行 在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)中执行mojo 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)中执行 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)中执行 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)中执行 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)中构建项目 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)中构建项目 在org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)中单线程构建 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)中执行 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)中执行 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)中执行 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)中执行 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)中执行 在org.apache.maven.cli.MavenCli.main(MavenCli.java:141)中执行 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)中执行 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)中执行 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中执行 在java.lang.reflect.Method.invoke(Method.java:597)中执行 在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)中增强启动器 在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)中启动 在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)中主要退出代码 在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)中执行 由com.jayway.maven.plugins.android.ExecutionException引起:ANDROID-040-001:无法执行: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, 结果= 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>git@github.com:samddman/persistent-cookies.git</url>
        <connection>scm:git:git@github.com:samddman/persistent-cookies.git</connection>
        <developerConnection>scm:git:git@github.com: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>

我做错了什么?

2个回答

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:perform会从release:prepare创建的SCM标签构建,如果有任何文件没有正确检入,它们在release:perform期间将会丢失。
您可以手动检查target/checkout文件夹,确保所有内容都在那里;或者尝试在target/checkout内手动调用mvn clean package。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接