1

selendroid-standalone を使用して携帯電話への接続を処理するテスト ケースを準備しようとしています。このプロジェクトは Maven を使用し、いくつかのサブモジュールが含まれているため、そのような依存関係を最上位の pom.xml に追加しました。
<dependency> <groupId>io.selendroid</groupId> <artifactId>selendroid-standalone</artifactId> <scope>compile</scope> <type>jar</type> <version>0.5.1</version> </dependency>

その後、コンパイルしようとすると、次のようなエラーが発生します。 Error adding archived file-set. PlexusIoResourceCollection not found for: d:\XXX\selendroid-server-0.5.1.apk: No such archiver: 'apk'.

依存関係をサブモジュールに移動しようとしましたが、使用する行SelendroidConfiguraionまたはパッケージの他のクラスに NoClassDefFoundError があります。

編集: 他の依存関係を追加すると、NoClassDefFoundError が発生しなくなります。

4

2 に答える 2

1

Maven が apk ファイルの内容をアンパックして再パックしようとするのを阻止する独自のアセンブリを指定する必要があります。これを行うためのチュートリアルがネット上で飛び交っていますが (通常は swfs または zip 用)、次のように指定して実行しました。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">  
  <id>jar-with-dependencies</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <useProjectArtifact>true</useProjectArtifact>
      <unpack>true</unpack>
      <scope>runtime</scope>
      <excludes>
        <exclude>*:apk:*</exclude>
      </excludes>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
      <outputDirectory>.</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

これを独自の XML ファイルに保存し、POM が既定のアセンブリ記述子ではなく、これを指すようにします。

<!-- disabled predefined assembly 
<descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
-->
<descriptors>
       <descriptor>src/main/assembly/assembly-descriptor.xml</descriptor>
</descriptors>
于 2016-07-28T15:44:57.323 に答える
0

pom.xml で別の依存関係バージョンを使用しました。

<dependency>
  <groupId>io.selendroid</groupId>
  <version>0.8.0</version>
  <artifactId>selendroid-standalone</artifactId>
</dependency>
<dependency>
  <groupId>io.selendroid</groupId>
  <version>0.8.0</version>
  <artifactId>selendroid-client</artifactId>
</dependency>

(詳細については、このページを確認することもできます: http://selendroid.io/quickStart.html )

于 2014-03-08T05:49:19.563 に答える