当前位置: 首页 > 知识库问答 >
问题:

构建一个带有本地依赖关系的Fat jar Gradle

甘兴学
2023-03-14

我有一个build.gradle文件,如下所示

buildscript {
    repositories { jcenter() }
}

dependencies {
    compile 'io.dropwizard:dropwizard-core:0.8.2'
    compile 'io.dropwizard:dropwizard-testing:0.8.2'
}

当我运行gradle build时,它从maven存储库下载dropwizard依赖项并构建一个fat JAR。每次我在新的开发环境中提取代码时,它都从maven central repo获取。但是有些开发机器没有internet访问,为了在这些机器中构建,我想如果我可以在源代码根文件夹中创建一个名为libs的文件夹,并使用该文件夹加载jar文件,如

repositories {
   flatDir {
       dirs 'libs'
   }
}

有可能吗?从maven central下载的jar在我的本地机器的何处找到,这样我就可以将它们复制到libs文件夹(dropwizard 0.8.2 jar)

共有1个答案

淳于煌
2023-03-14

是的,有可能。创建以下任务:

task copyLibs(type: Copy) {
   from configurations.compile
   into 'libs'
}

运行此任务后,您将拥有一个包含所有依赖项的文件夹库(您可能需要一个更大的范围,而不仅仅是编译--所以对齐任务)。您需要将此文件夹检查到SCM并提交它。

当然,请注意,如果您更改版本,它不会自动更新依赖项--您需要手动完成,或者可能编写一个插件来完成您需要的所有事情。

 类似资料:
  • 我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“ModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。 是否有

  • 我有以下项目结构: 问题: 如何在项目2中执行类? 来自哪个项目? 如果我只想编译/打包 project2,我该怎么做?(如果我从项目2中执行,则找不到项目1)。我想在不安装项目1的情况下执行此操作。 当然,如果需要的话,项目的结构可以改变。 下面显示了pom.xml文件中的相关部分。父/砰.xml 父/项目1/pom.xml 父/项目2/pom.xml 父/项目3/pom.xml与项目2相似

  • 问题内容: 我有一个简单的节点应用程序,它对github上另一个应用程序具有单一依赖性。使用可以很好地安装依赖项,但是当我尝试在其中安装某些东西时,它说不可用。例如,github应用程序将Mongoose安装为依赖项。我认为该父应用程序可以访问该模块,因为它位于子模块中: 结构看起来像这样: 我是否只需要在父级应用程序中同时包含猫鼬作为依赖项,还是可以通过子级方式访问该模块? 问题答案: 我是否只

  • 我正在尝试将构建服务器信息设置为meta-inf/manifest.mf。在使用带有manifestEntries的maven-jar-plugin时,它工作得非常好。问题是,当我将带有maven-assembly-plugin的Jar打包到带有依赖项的单个Jar中时(就像在这里:如何使用maven创建带有依赖项的可执行Jar?)我再也看不到我的清单条目了。我的猜测是,在程序集运行时,我的mani

  • 我有以下文件夹结构: 这里,我的是: 当我运行时,我希望有两个输出图像,一个用于,一个用于。 我使用(仅与版本2的语法兼容)。

  • 我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)