Php intellij:如何部署到两个文件夹?

Php intellij:如何部署到两个文件夹?,php,intellij-idea,deployment,composer-php,Php,Intellij Idea,Deployment,Composer Php,一般问题是:如何在一个intellij项目中同时处理多个不同的git回购协议。git回购需要在主应用程序中(也就是一个git回购)。我无法使用符号链接,因为我无法提交这些 我有两个吉特回购 一个用于主应用程序,另一个用于我在几个项目中使用的库 事情是这样的:我有一个主应用程序。通过composer,我将我的库/包添加到应用程序中 问题是: 文件夹结构: 发展 IdeaProjects/myappA 注:还有IDEA项目myappB等 IdeaProjects/mylib 在myappA有 Ide

一般问题是:如何在一个intellij项目中同时处理多个不同的git回购协议。git回购需要在主应用程序中(也就是一个git回购)。我无法使用符号链接,因为我无法提交这些

我有两个吉特回购

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

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

问题是:

文件夹结构:

发展

IdeaProjects/myappA

注:还有IDEA项目
myappB

IdeaProjects/mylib

在myappA有

IdeaProjects/myappA/vendor/mylib

服务器部署文件夹:

/var/www/www.myappA.com/

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

我还能做什么


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

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

intellij内部解决方案:只需将mylib作为模块导入myapp项目中即可 转到
文件>项目设置>模块
,单击
+
并选择
导入模块

git本机解决方案:使用

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

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


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

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

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


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

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