Php intellij:如何部署到两个文件夹?
一般问题是:如何在一个intellij项目中同时处理多个不同的git回购协议。git回购需要在主应用程序中(也就是一个git回购)。我无法使用符号链接,因为我无法提交这些 我有两个吉特回购 一个用于主应用程序,另一个用于我在几个项目中使用的库 事情是这样的:我有一个主应用程序。通过composer,我将我的库/包添加到应用程序中 问题是: 文件夹结构: 发展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
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项目中