【问题标题】:intellij: how to deploy to two folders?intellij:如何部署到两个文件夹?
【发布时间】:2017-07-20 19:44:48
【问题描述】:

一般的问题是:如何在一个 intellij 项目中同时使用多个不同的 git 存储库。 git repos 需要位于主应用程序中的位置(这也是一个 git repo)。我不能使用符号链接,因为我不能提交那些

我有 2 个 git 存储库

一个用于主应用程序,另一个用于我在多个项目中使用的库。

事情是这样的:我有主应用程序。通过作曲家,我将我的库/包添加到应用程序中。

问题:

文件夹结构:

发展

IdeaProjects/myappA

注意:还有 IdeaProjects myappB 等

IdeaProjects/mylib

在 myappA 中有

IdeaProjects/myappA/vendor/mylib

服务器部署文件夹:

/var/www/www.myappA.com/

我对库进行了很多更改,当我处理myappA 时,我将它作为另一个模块打开,所以我在那个文件夹/模块中对mylib 进行代码更改,实际上包含mylib的原始源代码。现在,我不想在每次进行微小更改时都安装或更新作曲家。所以我要做的是通过intellij部署库mylib中的文件,每次直接保存到我的主应用程序的composer install文件夹中,例如到IdeaProjects/myappA/vendor/mylib。现在的问题是,我需要将它以及部署到服务器部署文件夹。但是似乎没有办法使用 intellij 将文件部署到开箱即用的两个文件夹中。

我还能做什么?

目前我手动使用快捷键触发 ant 构建,然后将文件夹 IdeaProjects/myappA/vendor/mylib 复制到服务器部署目录。

【问题讨论】:

    标签: php intellij-idea deployment composer-php


    【解决方案1】:

    根据您的设置有多种解决方案:

    intellij 中的解决方案:只需将 mylib 作为模块导入 myapp 项目中 转到File > Project Settings > Modules,单击+ 并选择import module

    git原生解决方案:使用submodules

    子模块允许您将 Git 存储库作为另一个 Git 存储库的子目录。这使您可以将另一个存储库克隆到您的项目中并保持您的提交分开。

    请注意,使用子模块时有一些怪癖,尤其是使引用的子模块保持最新的方式

    为了完整性:如果您使用 gradle 或 maven 而不是 ant,您可以使用它们各自的项目视图并使用 + 添加多个 build.gradle 或 pom.xml 文件,这会自动将这些项目作为模块导入进入intellij。

    【讨论】:

    • 将其作为 intellij 模块导入确实会引发新问题。例如:我现在有了模块。该模块是库。 lib 也必须在主项目和部署文件夹中。再说一遍:当我将模块中的某些内容更改为 2 个文件夹时,我该如何部署?
    • 我不确定我是否正确理解了您的设置。你能再澄清一点吗?
    • 我有一个文件夹IdeaProjects/myappA,所有源代码都放在那里。我有一个部署文件夹/var/www/myappA 在我的本地开发服务器上运行的所有部署代码都坐在那里。我有一个库,每次我在mylib 中进行更改时,我都会在IdeaProjects/mylib 上进行编码,我需要将更改复制到IdeaProjects/myappA/vendor 和/var/www/myappA/vendor
    • 我会尝试将两个进程分开。可以使用我提出的任何建议来处理 intellij 设置,并且不应复制任何文件。应该只有模块依赖才能使这项工作。对于需要复制到您的部署文件夹的更改,我只需让构建脚本执行此操作,或者设置一个 rsync 以使其发生,如果您确定“任何”更改可以随时进行(似乎有点不过对我来说有风险)。
    • 我实际上使用的是 git deploy,所以如果模块不在myappA 文件夹中,那么它不会被部署。如果没有任何更改,您将以什么方式部署到本地开发部署文件夹?啊,也许我不确定 rsync 是如何工作的。它会删除目标部署文件夹中存在的文件吗?例如我可能会上传到本地 dev 文件夹,但不会上传到我的 src 项目
    【解决方案2】:

    我认为模块方法确实适合您的情况,是的,每个模块可以有不同的 git repo。右键单击您的项目根new->module 或file->new module from existing source

    如果您检查Settings | Version Control,Intellij 还应该自动检测项目中的每个 git 存储库,您应该会看到该列表。

    您还可以加快某些操作,例如 git pull,而不必从每个存储库中提取 (VCS -> Git -> Pull),您可以执行 VCS -> Update Project 或 ctrl-t(在 mac 上为 cmd-t)

    【讨论】:

    • 这并没有解决必须部署到 2 个单独文件夹中的问题
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多