2013-08-27 3 views
0

У меня есть два проекта Android в моем рабочем пространстве eclipse.Добавить проект eclipse lib на путь сборки maven?

Главный проект называется Hello, а другой проект android, который используется в качестве справочника библиотеки, называется HelloLibrary.

Я добавил проект HelloLibrary в путь сборки eclipse, щелкнув правой кнопкой проект Hello и добавив HelloLibrary в качестве проекта библиотеки.

Eclipse, удается найти, собрать и построить проект Hello, который в настоящее время использует код HelloLibrary но мавенный он не может найти проект 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 или мне нужно, чтобы создать сценарий артефакт Maven для HelloLibrary, а?

Оба являются проектами для Android.

Редактировать. я добавил это ПОМ файл Hello

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

и тесты не удалось из-за не найдя объект класса Lib, расположенный внутри проекта HelloLibrary

Вот мой тестовый класс

/** * Тест класс */ @RunWith (RobolectricTestRunner.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); 

} 

}

А вот класс Lib находится внутри проекта HelloLibrary

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

<?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> 

Благодарности

ответ

1

Существует обходной путь для использования проекта non maven в зависимостях maven, мы не должны его использовать, но когда у нас нет выбора, используйте «система» Сфера:

<dependency> 

    <groupId>org.yourjar</groupId> 
    <artifactId>yourjar</artifactId> 
    <version>0.1</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/lib/yourjar.jar</systemPath> 

</dependency> 
+0

Приветствие я дам это идти, но при нажатии жить мне нужно будет использовать соответствующий зависимости Maven – jonney

+0

thanks.maybe этой ссылки дает много трюков на зависимости Maven: HTTP: // stackoverflow.com/questions/2065928/maven-2-assembly-with-dependencies-jar-under-scope-system-not-included – pdem

+0

Кажется, не работает. он не может найти ссылочный класс из проекта библиотеки. Артефакт загружается в локальном ремарке .m3, но он не может использовать объекты класса, поскольку он не может найти его. – jonney

Смежные вопросы