0

Eclipse ワークスペースに 2 つの Android プロジェクトがあります。

メイン プロジェクトは Hello と呼ばれ、ライブラリ リファレンスとして使用される別の Android プロジェクトは HelloLibrary と呼ばれます。

Hello プロジェクトを右クリックし、HelloLibrary をライブラリ プロジェクトとして追加することで、Eclipse ビルド パスに HelloLibrary プロジェクトを追加しました。

Eclipse は、HelloLibrary コードを使用する Hello プロジェクトを見つけ、コンパイルし、ビルドすることができますが、maven では、以下を使用してテストをビルドして実行しようとすると、HelloLibrary プロジェクトが見つかりません。

mvn clean test -e

完全なスタック トレースは次のとおりです。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project Hello: Compilation failure: Compilation failure:
[ERROR] /Users/Jonathan/Android work/Hello/src/test/java/com/example/hello/TestFullscreenActivity.java:[9,32] package com.example.hellolibrary does not exist
[ERROR] /Users/xxx/Android work/Hello/src/test/java/com/example/hello/TestFullscreenActivity.java:[30,17] cannot find symbol
[ERROR] symbol  : class Lib
[ERROR] location: class test.java.com.example.hello.TestFullscreenActivity
[ERROR] /Users/xxx/Android work/Hello/src/test/java/com/example/hello/TestFullscreenActivity.java:[30,31] cannot find symbol
[ERROR] symbol  : class Lib
[ERROR] location: class test.java.com.example.hello.TestFullscreenActivity
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project Hello: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    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:320)
    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: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
    at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:152)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more

HelloLibrary を Maven ビルド パスに追加する方法はありますか、それとも HelloLibrary 用の Maven スクリプト アーティファクトも作成する必要がありますか?

どちらも Android プロジェクトです。

編集。これをHello pomファイルに追加しました

<dependency>
            <groupId>com.example.hellolibrary</groupId>
            <artifactId>HelloLibrary</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>apklib</type>
            <scope>compile</scope>
        </dependency>

HelloLibrary プロジェクト内にある Lib クラス オブジェクトが見つからないため、テストが失敗しました。

ここに私のテストクラスがあります

/** * テストクラス */ @RunWith(RobolectricTestRunner.class) public class TestFullscreenActivity {

private String stringOne = "hello";
private String stringTwo = "world";

@Test
public void test() {

    Assert.assertEquals(true, false);

}

@Test
public void testTwo() {

    Lib lib = new Lib();
    Assert.assertEquals(stringOne+stringTwo, lib.combineText(stringOne, stringTwo));

}

@Test
public void testThree() {

    Assert.assertEquals(true, true);

}

}

そして、これが HelloLibrary プロジェクト内にある Lib クラスです。

package com.example.hellolibrary;

/**
 * Test lib with some random methods
 * @author
 *
 */
public class Lib {

    public String combineText(String stringOne, String stringTwo){

        String result = "";

        result = stringOne + stringTwo;

        return result;

    }

}

HelloLibrary プロジェクトで使用する 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.example.hellolibrary</groupId>
    <artifactId>HelloLibrary</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>apklib</packaging>
    <name>HelloLibrary</name>

ありがとう

4

1 に答える 1