0

AndroidプロジェクトをMaven/Jenkinsに移動し、ビルド/コンパイル/テスト手順を検討しています。

問題:Javaコードに単純なコンパイルエラーが発生しましたが、mvn clean install packageを実行すると、ビルドが成功します。クラッシュして失敗するのは、アプリをデバイスにデプロイしたときだけです。

POMに何か問題がありますか?

ps。私はXXXXXにいくつかの情報を提供しました。ご心配なく。

    <?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>xxxxx</groupId>
    <artifactId>xxxxxx</artifactId>
    <version>1.0.0</version>
  </parent>

   <groupId>xxxxx</groupId>
    <artifactId>xxxx</artifactId>
    <version>1.0.0</version>
    <packaging>apk</packaging>
    <name>Android App</name>

    <dependencies>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>4.0.1.2</version>
            <scope>provided</scope>
        </dependency>

       <dependency>
            <groupId>com.actionbarsherlock</groupId>
            <artifactId>library</artifactId>
            <version>4.0.0</version>
            <type>apklib</type>
        </dependency>   
    </dependencies>

    <build>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <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>15</platform>
            <path>/Users/aidenfry/android-sdks</path>
          </sdk>
          <undeployBeforeDeploy>true</undeployBeforeDeploy>
        </configuration>
        <extensions>true</extensions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
4

1 に答える 1

1

エラーが表示されない理由は、maven が最初にクラスをコンパイルすることすらしなかったためである可能性が最も高いと思われます。

Maven にはさまざまな規則があり、そのうちの 1 つは、ソースコードが の下にあることを前提としていますsrc/main/java

pom.xml上記をプロジェクトのルート領域にドロップして実行したに違いありませんmvn clean install。Maven はそれを問題なく実行しますが、おそらくソース ファイルをデフォルトの IDE の場所に残しているため、maven はそれをスキップします。ターゲット ディレクトリを確認すると、そこにクラスがコンパイルされていないことがわかります。

次の 2 つのオプションがあります。

  1. 上記の pomのタグ内のどこかにこれを追加し<build>ます: ${basedir}/src
  2. ソース ファイルを再配置して、src/main/java構造に従うようにします。

個人的にはNo.2がおすすめです。

PS、src/main/testあまりにもあり、テストクラスはそこに行くべきです:)

pom ファイルの構成の詳細については、こちらを参照してください。

于 2012-06-14T11:31:28.263 に答える