首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

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

  •  
  •   iszengmh · 203 天前 via Android · 2285 次点击
    这是一个创建于 203 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    git/svn 还能用在部署方面吗?
        24
    guixiexiezou   202 天前
    当前我就是这样做的,做热修复的时候只能这样手动替换 class 文件,一般情况还好,改不了几个 class,遇到要改一大堆的时候,确实是生不如死
        25
    janus77   202 天前
    以前的公司有类似的操作,不过当时是打成 jar 包然后替换的,再 mvn build。你可以试试,这样快速又安全
        26
    janus77   202 天前
    以前的公司有类似的操作,不过当时是打成 jar 包然后替换的,再 mvn build。你可以试试
        27
    dalieba   202 天前 via Android
    最简单的办法就是用 7-zip
        28
    Caballarii   202 天前   ♥ 1
    @Martin9 肯定啊,要部署直接在服务器用 git/svn 拉代码,现场编译,jenkins 就是这样的东西,图形化界面,把脚本都配好了,以后部署只要把代码一上传到 git/svn,然后在网页上点一下就部署了
        29
    iszengmh   202 天前 via Android
    @Caballarii 因为我们都党政机关的项目,服务器都是内网的,不能在服务器里面拉取文件
        30
    lihongjie0209   202 天前
    你全量打包到现场 rsync 就好了
        31
    mikicomo   202 天前
    @iszengmh #29 把 git、svn、jenkins 也部署到内网可以么?
        32
    Caballarii   202 天前   ♥ 1
    @iszengmh 可以在另一台机器上装 jenkins,拉取代码编译,然后把打包好的文件复制传到服务器上,执行启动脚本,这个都是可以写成完整脚本自动执行的
        33
    kevinlm   202 天前 via iPhone
    从 eclipse3 点几的时候,导出文件就能带目录啊…
        34
    iszengmh   202 天前 via Android
    @Caballarii 因为服务器是党政机关相关部门提供云服务,可能需要申请另外的端口开放,这个可以考虑,但是可能比较麻烦
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   969 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 21:50 · PVG 05:50 · LAX 13:50 · JFK 16:50
    ♥ Do have faith in what you're doing.