Java 开发有没有方便的工具可以拷贝出 class 文件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
iszengmh
V2EX    程序员

Java 开发有没有方便的工具可以拷贝出 class 文件

  •  
  •   iszengmh 2019-05-22 22:36:20 +08:00 via Android 4308 次点击
    这是一个创建于 2340 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每次开发功能要部署到生产环境,不敢整个项目复制上去,只是把自己写得功能 class 文件复制上去,非常麻烦要打开一个个文件夹去复制,有没有什么方便的工具

    37 条回复    2024-03-11 09:22:18 +08:00
    kosmosr
        1
    kosmosr  
       2019-05-22 22:40:10 +08:00 via Android
    arthas
    littlewing
        2
    littlewing  
       2019-05-22 22:41:08 +08:00 via iPhone
    你们不用 git 管理代码的吗
    redtea
        3
    redtea  
       2019-05-22 22:44:03 +08:00 via iPhone   1
    这样部署会出事故的
    loveCoding
        4
    loveCoding  
       2019-05-22 22:44:34 +08:00 via iPhone   1
    生产环境还一个一个复制覆盖 class,这是要跑路的节奏啊,不要走歪路,老老实实去学下 maven/gradle,jenkins
    notreami
        5
    notreami  
       2019-05-22 22:45:17 +08:00
    这个操作,送你 6 字箴言吧。。。。
    npe
        6
    npe  
       2019-05-22 22:45:18 +08:00 via Android
    为啥不在服务器编译?
    ob
        7
    ob  
       2019-05-22 22:48:15 +08:00 via Android   1
    idea 可以设置同步
    iszengmh
        8
    iszengmh  
    OP
       2019-05-22 22:48:31 +08:00 via Android
    svn 管理哦
    serical
        9
    serical  
       2019-05-22 23:01:27 +08:00 via Android   1
    https://github.com/serical/patcher 遇到过类似问题,idea 不知道还能不能用
    szq8014
        10
    szq8014  
       2019-05-22 23:31:14 +08:00 via Android   1
    3 年前公司写 java web 还用着 svn 的时候有这样的需求,因为需要将更新发给现场,包越小越好,当时的操作是 svn 选中多个 commit 然后导出,这样就把这几次提交修改的文件带目录结构导出来了,jsp 就不需要啥操作了,java 的话就到每一个 java 文件那里复制文件名然后用 everything 搜名字,找到对应的 class 文件复制过来,java 文件可删可不删。整体操作下来还是挺有效率的。
    sailing0505
        11
    sailing0505  
       2019-05-22 23:54:49 +08:00 via Android
    maven 有个 dependency 插件
    itechify
        12
    itechify  
    PRO
       2019-05-23 04:21:10 +08:00 via Android   1
    maven/gradle +jenkins 完美解决
    Jonz
        13
    Jonz  
       2019-05-23 08:10:15 +08:00
    之前用 Eclipse 的时候可以按目录结构导出的
    nekolr
        14
    nekolr  
       2019-05-23 08:19:13 +08:00 via Android   1
    这样做不好,不过有个工具可以一试。https://github.com/nekolr/sirius-inc
    使用这个工具需要先提交 svn,然后将需要打包的那条提交的 revision 复制到软件中。
    nekolr
        15
    nekolr  
       2019-05-23 08:21:11 +08:00 via Android
    有什么问题可以交流一下
    fhsan
        16
    fhsan  
       2019-05-23 08:42:23 +08:00
    这样部署肯定有问题的,放 git 里面,部署回滚都很方便。
    5vK0B97Ytv7v5dw5
        17
    5vK0B97Ytv7v5dw5  
       2019-05-23 09:18:42 +08:00
    我之前写的一个 idea 插件 可以试试 也是 javaweb 导出 class 文件 我也一直在用 我扔到了 github 上了 自己 拉一下
    目前没有说明文档 如果有不知道的地方可以问我一下
    https://github.com/laitySunPiaoliang/exportclass/releases
    silentstorm
        18
    silentstorm  
       2019-05-23 09:26:40 +08:00
    还能这样操作,不怕出问题吗?
    比如 a.java 里面定义了一个 static final 常量,有若干 java 文件引用了这个常量。那么在编译时会把常量值编译到引用他的所有 class 文件里面。
    如果你修改了常量值,只把 a.class 部署上去。造成的结果就是其他 class 里面的常量值没有变,你的修改没有起效。
    jimrok
        19
    jimrok  
       2019-05-23 09:26:45 +08:00
    如果不折腾 jenkins,简单就是用 python 的 fabric,或者 ruby 的 capistrano。 或者再简单些,写个 deploy.sh 的 shell script,把 git pull,编译,再 mv,restart 都做一遍
    qping
        20
    qping  
       2019-05-23 09:27:35 +08:00   1
    我在第一家公司的时候也是经历过这个阶段,项目分布在各个地方且是内网无法外网访问,各个地方项目人员变动频繁,代码管理混乱,打出整包能代码到 1 个 G,现场内网网速不快,所以功能更新只能增量包更新,还真有个 windows 下的工具。

    链接: https://pan.baidu.com/s/1AwVnlakRZczoFHE2A3gMvg 提取码: xqtd

    使用方法是选择项目代码根目录,然后选择时间点,能把这个时间点之后修改的文件 + 目录导出来,由其适合 java 这种编译 class 的。

    另外:master 分支上代码应该始终和线上代码保持一致,这么操作会出事,如果你能改变就尽快回归正道,不能的话话早点换个公司对你也比较好。。。。
    Guozi1989
        21
    Guozi1989  
       2019-05-23 09:28:20 +08:00
    我记得三年前我在一家保险公司上班,他们发布也是每次只覆盖 class 文件,这个操作我至今难忘!
    gaius
        22
    gaius  
       2019-05-23 10:10:05 +08:00
    没必要找改的 class,所有的就行了,也不会很大。版本控制要有
    Martin9
        23
    Martin9  
       2019-05-23 10:15:35 +08:00
    我现在也是这样部署的。。。
    一个小项目,只有我自己在做,第一次部署的时候打了个包扔到服务器的 docker 里面。
    后面每次都是把 class 文件直接上传。

    git/svn 还能用在部署方面吗?
    guixiexiezou
        24
    guixiexiezou  
       2019-05-23 10:17:50 +08:00
    当前我就是这样做的,做热修复的时候只能这样手动替换 class 文件,一般情况还好,改不了几个 class,遇到要改一大堆的时候,确实是生不如死
    rb6221
        25
    rb6221  
       2019-05-23 10:20:36 +08:00
    以前的公司有类似的操作,不过当时是打成 jar 包然后替换的,再 mvn build。你可以试试,这样快速又安全
    rb6221
        26
    rb6221  
       2019-05-23 10:20:42 +08:00
    以前的公司有类似的操作,不过当时是打成 jar 包然后替换的,再 mvn build。你可以试试
    dalieba
        27
    dalieba  
       2019-05-23 11:42:47 +08:00 via Android
    最简单的办法就是用 7-zip
    Caballarii
        28
    Caballarii  
       2019-05-23 11:52:35 +08:00   1
    @Martin9 肯定啊,要部署直接在服务器用 git/svn 拉代码,现场编译,jenkins 就是这样的东西,图形化界面,把脚本都配好了,以后部署只要把代码一上传到 git/svn,然后在网页上点一下就部署了
    iszengmh
        29
    iszengmh  
    OP
       2019-05-23 12:31:51 +08:00 via Android
    @Caballarii 因为我们都党政机关的项目,服务器都是内网的,不能在服务器里面拉取文件
    lihongjie0209
        30
    lihongjie0209  
       2019-05-23 12:36:40 +08:00
    你全量打包到现场 rsync 就好了
    mikicomo
        31
    mikicomo  
       2019-05-23 12:39:37 +08:00
    @iszengmh #29 把 git、svn、jenkins 也部署到内网可以么?
    Caballarii
        32
    Caballarii  
       2019-05-23 13:32:08 +08:00   1
    @iszengmh 可以在另一台机器上装 jenkins,拉取代码编译,然后把打包好的文件复制传到服务器上,执行启动脚本,这个都是可以写成完整脚本自动执行的
    kevinlm
        33
    kevinlm  
       2019-05-23 13:34:31 +08:00 via iPhone
    从 eclipse3 点几的时候,导出文件就能带目录啊…
    iszengmh
        34
    iszengmh  
    OP
       2019-05-23 15:06:16 +08:00 via Android
    @Caballarii 因为服务器是党政机关相关部门提供云服务,可能需要申请另外的端口开放,这个可以考虑,但是可能比较麻烦
    so2back
        35
    so2back  
       2024-03-11 00:19:08 +08:00
    @qping #20 老哥,这个软件还有吗,可以麻烦重新给个链接吗,谢谢
    qping
        36
    qping  
       2024-03-11 00:56:59 +08:00 via Android
    @so2back 时间太久了,我也没有留存,你可以自己写一个,根据文件创建时间或修改时间来判断是否要更新
    so2back
        37
    so2back  
       2024-03-11 09:22:18 +08:00
    @qping #36 噢好的,那只能自己动手写一个了,还是谢谢老哥
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2624 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 13:15 PVG 21:15 LAX 06:15 JFK 09:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86