2 zjl3576 zjl3576 于 2016.03.23 17:11 提问

关于gradel打包jar包的问题

有没有高手是用gradel打包jar包的呢
我build完之后可以运行,但出现在两个问题。
第一个就是resources目录下的配置文件给打包进jar包里了。
第二个是class文件给打包了双份,一份的路径是com.test.*,另一份是main.com.test.*
里面的class文件是一样的,这让我百思不得其解。我试过自己用脚本打包,却读取不到配置文件而运行不了。由于项目需要,配置文件是必须放在单独一个目录下的。请高手帮我看看。
附上jar包解压截图:
jar包解压截图

以下是gradle脚本

 //依赖编译,然后打包JAR
task build_jar(type:Jar, dependsOn: [compileJava, processResources, classes]) {
    manifest {
        attributes 'Main-Class': 'com.mmo.TestPaoding'

        FileTree tree = fileTree(dir: 'lib')
        tree.include '**/*.jar'
        def  classPath = '';
        tree.each {File file ->
            classPath += 'libs/' + file.name + ' '
        }
        tree = fileTree(dir: '/src/main/resources')
        tree.each {File file ->
            classPath += 'resources/' + file.name + ' '
        }

        attributes 'Class-Path': classPath 
    }
    from 'build/classes/main'
    destinationDir = file('build/libs')
}

//清除上次的编译过的文件
task clean_dir(type:Delete){
    delete 'build',release_dir
}

task copyResources(type: Copy) {
    from('build/resources/main')
    into release_resources_dir
}

task copyDepences(type: Copy) {
    from configurations.runtime
    into release_lib_dir
}

task release(type: Copy, dependsOn:[build_jar, copyResources, copyDepences]) {
    from('build/libs') {
        include '*.jar'
    }
    into release_dir
}

1个回答

zjl3576
zjl3576   2016.03.23 17:20
已采纳

当然,如果我在代码里将配置文件的路径改为 config/config.xml,那么发版后也是可以说的,而且配置文件不需要打包在jar包里。
但这里会出现的问题时,调试时,我需要将路径改成config.xml,发版时又改为config/config.xml
请问高手有没有方法可以解决呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
IntellJ 打包Jar包出现Jar包签名问题的一种解决办法。
最近一段时间改用了IntelliJ,遇到一个打Jar包的问题。这里的前提是maven项目。 因为要提交hadoop相关jar包去服务器上执行job,所以开发完hadoopMR逻辑之后要把相关 任务类和依赖打包上传。 依赖中有一个bouncyCastle相关的jdk15on,如果用Intellj 建立artifacts去打包就会把相关依赖jar包进拆包,然后再合并起来。这样有个问题,将原有的ja
利用eclipse中的gradle tasks打包项目
首先需要保证自己的gradle文件中 已经有 / Apply the java-library plugin to add support for Java Library apply plugin: 'java' apply plugin: 'war'  apply plugin: 'eclipse-wtp' sourceCompatibility=1.8 targe
gradle将lib打包成jar
//Copy类型 task makeJar(type: Copy) { //删除存在的 delete ‘build/libs/mysdk.jar’ //设置拷贝的文件 from(‘build/intermediates/bundles/release/’) //打进jar包后的文件目录 into(‘build/libs/’) /
命令行运行jar包(idea+gradle)的两种方式
1.java -jar test.jar(注意此时需要在gradle中添加Main-Class) 2.java -classpath test.jar Hello(可以不添加,但如果引用外部包,需要添加) 如果需要引用外部的Jar包则在gradle中添加如下修改 1.jar {     manifest {         attributes 'Implementation-T
将Gradle项目打包生成jar包
首先配置本地MENIFEST.MF,添加关联jar包,设置程序入口 修改pom文件下的配置信息,添加maven-shade-plugin配置信息 运行cmd,进入到项目所在目录,运行mvn clean package 进入项目目录,target目录,既可得到对应jar包
Android 深入gradle环境变量配置和gradle插件版本,打成jar包
gradle 版本和android 插件版本如下如图,Ctrl+Alt+Shift+S 快捷打开 2.如何异步下载gradle文件如下图异步之后多的部分文件3.在gradle-wrapper.properties 中看gradle版本 4.gradle的多种表示形式 dependencies { classpath 'com.android.tools.build:gradle:
Gradle多环境多渠道打包
多工程全局配置 buildConfigField配置 在gradleproperties中配置不同的服务器地址或者友盟网易云信等第三方appKeyAndroid开发使用强大的gradle配置多环境多渠道打包,只有你没想到的,没有gradle不能配置的。以次记录开发中配置,以便后续翻阅。多工程全局配置随着项目不断迭代,需求不断更改,公司需求将一个一个不同功能提取为一个module,一个新的产品如果需要
Storm 如何分发第三方依赖jar
Hadoop一般用在离线的分析计算中,而storm区别于hadoop,用在实时的流式计算中,被广泛用来进行实时日志处理、实时统计、实时风控等场景,当然也可以用在对数据进行实时初步的加工,存储到分布式数据库中如HBase,便于后续的查询。 面对的大批量的数据的实时计算,storm实现了一个可扩展的、低延迟、可靠性和容错的分布式计算平台。 1、对象介绍 tuple:表示流中一个基本的处理单元,可
jar命令打包及运行问题
今天遇到了一个需要手动打jar包并运行的问题编辑一个MANIFEST文件,指定classpath和mainclass,内容如下:Manifest-Version: 1.0Created-By: 1.4.0-betaMain-Class: com.ufinity.report.TestClass-Path: db.jar log4j.jar打包后发现最后一行关于Class-Path的设置被忽略了
jar打包与常见异常的解决方法
一、问题与解决方法叙述 存在以上两个文件,使用命令打包jar文件出现如下异常 在网上找了几个博客都说是MAINFEST.MF文件格式有无,检查了好几遍都没发现问题,后来灵机一定,觉得配置文件应该放在class文件的前面,一试果然好使 二、打包、运行jar文件的命令 打包: jar -cvf test.jar Demo.class jar -cvfm test.jar M