2013-04-10 4 views
0

간단한 Android app을 Maven으로 변환하고 코드에서 사용하는 주석 클래스가 포함 된 타사 jar (ActiveAndroid)로 막혔습니다. jar 파일에 annotations 클래스 파일이 포함되어 있고 libs 디렉토리에 포함시키고 Eclipse로 컴파일 할 때 jar 파일이 잘 작동 함을 확인했습니다.Maven에서 외부 jar의 주석을 찾을 수 없습니다.

가 여기 내 pom.xml 파일입니다 :

<?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.danh32</groupId> 
    <artifactId>testapp</artifactId> 
    <version>1.0</version> 
    <packaging>apk</packaging> 
    <name>testapp</name> 

    <properties> 
     <platform.version> 4.1.1.4</platform.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.google.android</groupId> 
      <artifactId>android</artifactId> 
      <version>${platform.version}</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>com.actionbarsherlock</groupId> 
      <artifactId>actionbarsherlock</artifactId> 
      <version>4.2.0</version> 
      <type>apklib</type> 
     </dependency> 

     <dependency> 
      <groupId>com.activeandroid</groupId> 
      <artifactId>activeandroid</artifactId> 
      <version>LATEST</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <sourceDirectory>src</sourceDirectory> 
     <plugins> 

      <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.5.0</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>16</platform> 
        </sdk> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 

      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

을 그리고 여기 내 컴파일 오류입니다 :

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 19.339s 
[INFO] Finished at: Wed Apr 10 14:18:51 CDT 2013 
[INFO] Final Memory: 17M/81M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project testapp: Compilation failure: Compilation failure: 
[ERROR] /Users/danh32/code/android/workspace-android/TestApp/src/com/danh32/testapp/db/DSLocation.java:[9,43] cannot find symbol 
[ERROR] symbol : class ConflictAction 
[ERROR] location: @interface com.activeandroid.annotation.Column 
[ERROR] /Users/danh32/code/android/workspace-android/TestApp/src/com/danh32/testapp/db/DSLocation.java:[15,32] cannot find symbol 
[ERROR] symbol : method unique() 
[ERROR] location: @interface com.activeandroid.annotation.Column 
[ERROR] /Users/danh32/code/android/workspace-android/TestApp/src/com/danh32/testapp/db/DSLocation.java:[15,47] cannot find symbol 
[ERROR] symbol : method onUniqueConflict() 
[ERROR] location: @interface com.activeandroid.annotation.Column 
[ERROR] /Users/danh32/code/android/workspace-android/TestApp/src/com/danh32/testapp/db/DSLocation.java:[15,66] cannot find symbol 
[ERROR] symbol : variable ConflictAction 
[ERROR] location: class com.danh32.testapp.db.DSLocation 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 

난 그냥 메이븐 함께 시작 이클립스 이외의 안드로이드 응용 프로그램을 컴파일하고있어, 그래서 나는 간단한 것을 놓치고 있다고 확신한다. 올바른 방향으로 향하는 모든 움직임은 높이 평가됩니다!

감사합니다.

+0

'-X' 명령 행 옵션으로 프로젝트를 컴파일하고 jar 파일이 실제로 classpath에 있는지 확인하십시오. 그럴 경우, 필요한 클래스를 포함하지 않습니다. –

+0

-X 플래그를 사용하여 실행했고 클래스 경로 목록에 표시됩니다. Eclipse에 배포 된 jar를 사용할 수 있기 때문에 jar에는 올바른 클래스가 포함되어 있으며 모든 것이 올바르게 컴파일되고 실행됩니다. – danh32

+1

'최근'을 사용 중입니다. 해당 이슈의 버전이 두 가지 이상일 수 있으며 Maven이 Eclipse에서 다른 버전을 선택할 가능성이 있습니까? – Joe

답변

1

가장 최근 버전을 사용하고 있습니다. 이슈의 버전이 두 가지 이상일 수 있으며, Maven이 Eclipse에서 다른 버전을 가져올 수 있습니까?

1

활성 안드로이드 이슈는 Maven Central Repo에서 볼 수 없습니다 (this search 참조). 해당 로컬 저장소에 해당 병을 설치할 수 있습니다 (로컬 컴퓨터에서만 작동합니다). 또는 해당 POM에서 제어하고 참조하는 저장소에이 이슈를 배포 할 수 있습니다.

+0

감사합니다. 이미 내 서버에서 실행중인 Archiva 인스턴스에 배포했습니다. ActiveAndroid 종속성은 mvn 종속성으로 채워집니다. tree 및 mvn dependency : list에 오류가 표시되지 않습니다. – danh32

0

클래스를 고려 했습니까? 버전 문제 일까? 단지 추측 할 만하다. 그러나 1.6 JDK (target 1.6)를 사용하여 jar 파일을 빌드했을 수있다. POM은 소스와 대상을 1.5로 지정했다. 1.5 JDK를 사용한다고 가정 할 때, 컴파일러는 단순히 컴파일 된 jar 파일의 클래스를 읽을 수 있습니다.

+0

위의 의견에서 내 답변을 찾았지만, 앞으로는이 점이 중요합니다. – danh32

+0

@ danh32 나는 일반적으로 명령 줄에서 건물에 의존합니다. IDE 혼란을 제거하여 많은 것을 단순하게 만듭니다. –