Eclipse工作区设置并打包一个独立的jar

时间:2012-10-28 10:16:11

标签: eclipse maven gradle

我在eclipse工作区内有5个常规java项目,它们具有相互依赖性和外部jar依赖性 存在作为maven存储库的库和不存在的库。

在Eclipse中一切正常,但我需要完成两项任务:

1) 将所有内容打包成一个可运行的jar,我可以将其上传到另一台计算机并运行而无需设置 同样的日食环境。我一直在看gradle / maven,但不知道我是否需要一些“复杂”的东西 我的设置似乎有很多工作区设置必须改为使用这些工具,但我可能错了。

2) 我很快就想在谷歌代码上托管两个java项目的代码,所以工作区应该以某种方式构建 这使得任务顺利。

我提到这两项任务,因为我不知道它们是否以某种方式相互作用。

如何以良好的方式解决这个问题? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

您的描述听起来非常适合Gradle的多项目支持及其日食和应用程序插件。这是我如何接近它的一个简单例子。

您的项目可能位于同一个eclipse工作区中,但不一定位于同一个文件夹下,因此请记住以下目录结构假设您可以自由移动它们。

|-- component1
|-- component2
`-- myRunnableApp

第一步是创建顶级build.gradle文件和settings.gradle。

|-- build.gradle
|-- settings.gradle
|-- component1
|-- component2
`-- myRunnableApp

您的settings.gradle将指示gradle将子目录视为子项目。

include ':component1', ':component2', ':myRunnableApp' 

您的build.gradle将包含所有子项目通用的设置,在这种特殊情况下,我们要应用java和eclipse插件:

subprojects {

  apply plugin: 'eclipse'
  apply plugin: 'java'

  repositories {
    mavenCentral()
  }
}

这应该足以让你通过发布gradle eclipse来生成eclipse项目。接下来,您将要声明项目之间的依赖关系:

COMPONENT1 /的build.gradle

dependencies {
    // declare your 3rd party jar dependencies as needed
    compile 'group:artifact:version'
}

现在您可以声明项目之间的依赖关系 - 这将在生成它们时反映在您的eclipse项目文件中。

COMPONENT2 /的build.gradle

dependencies {
    compile project(':component1')
}

最后,您将要将应用程序插件应用于可运行的项目。它会生成你的jar文件以及unix和windows的包装器sh / bat文件。

myRunnableApp /的build.gradle

apply plugin: 'application'

mainClassName = 'my.custom.app.Main'

dependencies {
    // component 1 is a transitive dependency of component 2
    compile project(':component2')
}

那就是它!我希望这应该是推出自己的构建的一个很好的起点。查看多项目构建的gradle文档,java插件,应用程序插件和依赖项管理。

希望有所帮助!