【问题标题】:Include Java project as library包含 Java 项目作为库
【发布时间】:2013-01-18 20:27:12
【问题描述】:

我的 Eclipse 工作区中有三个项目:

EventKitchenCore
EventKitchenDesktop
EventKitchenAndroid

EventKitchenCore 包含所有核心功能,EventKitchenDesktopEventKitchenAndroid 本质上只是不同的用户界面。

我已添加 EventKitchenCore 并在 EventKitchenDesktop 中作为库工作,但是我无法弄清楚如何将其作为库添加到 EventKitchenAndroid

我该怎么做?每次我进行更改时都必须导出为lib 目录中的 jar,这会很痛苦...

我尝试在Properties > Java Build Path > LibrariesProperties > Android > Library 中添加Core 项目,但没有成功:\

更新 - 现在,我通过将核心项目导出为 libs 文件夹中的 jar 来使其正常工作。但是我经常进行更改,就像我说的那样,这很痛苦。

【问题讨论】:

  • 纯Eclipse解决方案,看看here的回答是否有帮助。
  • 这个问题比快速阅读让我想的更有趣

标签: java android eclipse cross-platform


【解决方案1】:

Eclipse 内置了Ant 支持。您可以利用它自动创建当前项目的 JAR 并放入另一个项目的文件夹中。

如果EventKitchenAndroidEventKitchenCore 项目都在同一个工作区中,则在EventKitchenCore 项目中创建一个build.xml 文件,其中仅包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<project name="EventKitchenCore" default="createjar">
    <target name="createjar">
        <jar destfile="../EventKitchenAndroid/libs/EventKitchenCore.jar" basedir="bin" />
    </target>
</project>

要对其进行测试,请在 Eclipse 中选择该文件,然后按 Ctrl+F11 将其作为 Ant 构建文件运行。如果它以您想要的方式工作,那么您可以告诉 Eclipse 在每次构建项目时自动执行此构建文件。转到EventKitchenCore 的项目属性并在Builders 属性中,单击Import... 并选择您刚刚创建的build.xml 文件。

现在,每次构建项目时都会执行它。您可以通过按 Ctrl+B 手动强制构建项目。另请参阅我刚刚创建的video demo

【讨论】:

  • 如果我想创建库并且库中有其他 jar,ProjectNAME/libs/native/windows/xxx.dll 中还有一些 .dll 文件。我需要单独导入这些填充吗?或者它会在 jar/library 中?
【解决方案2】:

您可以将您的项目配置为依赖于 EventKitchenCore 的 Maven Artifact,因此,Maven 将为您处理:

EventKitchenCore pom.xml:

<project ...>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.adamgaskins</groupId>
   <artifactId>event-kitchen-core</artifactId>
   <packaging>jar</packaging>
   <version>0.0.1-SNAPSHOT</version>
   <name>EventKitchenCore</name>
</project>

EventKitchenDesktop pom.xml:

<project ...>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.adamgaskins</groupId>
   <artifactId>event-kitchen-desktop</artifactId>
   <packaging>jar</packaging>
   <version>0.0.1-SNAPSHOT</version>
   <name>EventKitchenDesktop</name>
   <dependencies>
     <dependency>
       <groupId>com.adamgaskins</groupId>
       <artifactId>event-kitchen-core</artifactId>
       <version>0.0.1-SNAPSHOT</version>
     </dependency>
   <dependencies>
</project>

EventKitchenAndroid pom.xml:

<project ...>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.adamgaskins</groupId>
   <artifactId>event-kitchen-android</artifactId>
   <packaging>apk</packaging> <!-- for this, you need the maven-android-plugin -->
   <version>0.0.1-SNAPSHOT</version>
   <name>EventKitchenAndroid</name>
   <dependencies>
     <dependency>
       <groupId>com.adamgaskins</groupId>
       <artifactId>event-kitchen-core</artifactId>
       <version>0.0.1-SNAPSHOT</version>
     </dependency>
   <dependencies>
</project>

不要忘记 SNAPSHOT 后缀,否则 Maven 不会更新你的更改。

【讨论】:

  • 更多信息:link
【解决方案3】:

最简单的想法(也可以在 Eclipse 之外工作)是从库的包目录到项目的 src-文件夹中创建符号链接/快捷方式:

|- EventKitchenCore
   |- src/
      |- org.your.library.package <-+
|- EventKitchenDesktop              |
   |- src/                          |
      |- org/desktop/something/     |
      |- symlink to ----------------+
|- EventKitchenAndroid              |
   |- src/                          |
      |- org/android/something/     |
      |- symlink to ----------------+

这样,您可以编译实际项目,就好像您的库将成为应用程序的一部分一样,并且您的更改会立即反映在两个项目中。

【讨论】:

  • 能做到版本控制和Windows友好吗?
  • @Rekin windows下也有符号链接(至少从Vista开始)。另外,您可以使用git submodules
【解决方案4】:

我会按照一些贡献者的建议说,使用 maven 或 ant。配置很简单,大部分都已经放好了,复制粘贴就行了。 当您在开发环境中时,您可以做的是在构建路径中添加项目。转到构建路径并选择“项目”选项卡并添加您需要的项目,因此每次进行更改时,所有更改对于链接的项目都是可见的。当您即将部署时,您可以使用 maven 或 ant。但是,您也可以在开发中同时使用它们。但是,如果您想要快速修复,如果您还不想使用 maven 或 ant,我建议您参考这些项目。但是,当您部署时,我强烈建议您使用这两个项目管理器之一,因为正如您所提到的,将项目导出为 jar,然后将它们添加到库文件夹中是一件很痛苦的事情。

【讨论】:

  • -1 以未格式化的方式重复已经回答的内容
【解决方案5】:

这里有一个可以帮助你的解决方案:

1) Eclipse-Package Explorer - Your Project(Android) - 右键单击​​您的项目。

2) 点击 Android(在屏幕左侧) - 现在您的屏幕可能看起来像这样 -

现在在屏幕底部的库部分,您可以直接添加所有库项目,而无需制作任何 JAR。只需要在工作区中导入这些库项目,或者您的所有库项目都应该在 Eclipse 中打开。

1) 单击添加按钮,您将获得可用的库项目列表,从中选择并构建您的项目。

祝你好运..

【讨论】:

  • 在执行此操作之前,请删除您尝试过的所有包含的 JAR 文件,并将其从 lib 文件夹中删除。然后尝试上述解决方案。
【解决方案6】:

你必须去你想要制作一个库的项目的偏好,并在Android子菜单中检查Is Library。然后您可以尝试再次导入您的项目。

【讨论】:

  • 该库是标准java库,不是android库。它必须与桌面应用程序兼容。
【解决方案7】:

我相信您正在寻找的是 Eclipse 中的“链接源”选项。从您的 android 项目中,选择项目并右键单击以选择“构建路径”>“链接源”。这将允许您在与您的 android 应用程序相同的构建路径中访问您的 Java 库以进行开发。

【讨论】:

    【解决方案8】:

    如果您只想引用核心项目代码,那么在 Eclipse 中您可以从 Android 项目中引用该项目。 (“库项目”功能仅适用于 Android 库项目,您这里只是一个普通的 Java 项目,对吧?)

    因此,在您的包资源管理器中,您拥有所有三个(核心、Android 和桌面)项目。右键单击EventKitchenAndroid 并选择属性。选择 Java Build Path -> Project 选项卡并单击 Add... 按钮。选择EventKitchenCore。转到 Order & Export 选项卡,确保选中 EventKitchenCore 项目,一切顺利。对 EventKitchenCore 源的任何更改都会立即用于 Android 项目。

    【讨论】:

      【解决方案9】:

      这是我将库添加到我的项目的方式

      第 1 阶段:创建库项目

      在图片上,您可以看到 2 个名为 libraryListSamples 的项目正在使用 library

      要将项目设为库项目,请右键单击项目并选择属性

      标记 IsLibrary 复选框以使其成为库

      你可以在库项目的bin文件夹中看到.jar文件

      现在库项目已创建

      第 2 阶段:将库项目添加到 android 项目

      现在右键单击您的 android 项目 并选择其属性。然后点击库区域内的添加按钮并将您的库项目的路径设置为它

      然后会出现一个弹出窗口,显示您在 eclipse 中创建的当前处于活动状态的库项目列表(不会显示已关闭的库项目)

      这里我只有一个项目,所以在这里列出

      选择您需要的所有库,然后单击确定。现在库项目将添加到您的项目中

      在检查您的 android 项目时,您可以看到您的项目的 .jar 文件已添加到您的 android 项目中

      注意:- 如果您在库项目中使用 android 支持包(android-support-v4.jar),则无需在您的安卓项目。

      您还可以使用 ant 将库添加到项目中。但我对此一无所知。

      【讨论】:

      • 您错过了第 3 步:您将库项目添加到 EventKitchenDesktop 并观察此配置失败
      • 你的意思是你想在你的库中添加库项目,然后将它作为一个库添加到 android 项目中吗??
      猜你喜欢
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多