我正在使用Maven开发Java项目,我需要经常部署到两个不同的weblogic环境。这两个部署之间的唯一区别是这两个文件中的一系列更改:pom.xml
和weblogic.xml
文件。其余文件都是一样的。
我们正在为此创建2个GIT分支:dev
& parallel-dev
。
但是我们在维护和合并这两个分支之间的变化方面遇到了很多问题。
所有更改都在parallel-dev
分支中完成,一旦此代码经过审核和批准,我们就会将其合并到dev
分支,但这两个文件除外需要合并(除非修改了pom版本 - 在这种情况下,我们需要合并版本更改,而不是pom.xml中的其他更改)。这有点乱。
我认为这种方法非常混乱,可以改进,但不能真正看到。我很乐意为这个过程保留一个分支,避免我们所面临的所有疯狂合并。
非常感谢任何建议。
- 编辑 -
pom.xml中的差异只是parallel-dev分支的不同配置文件:
<profiles>
<profile>
<id>parallel-dev</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<includes>
<include>env.properties</include>
<include>more.properties</include>
...
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>env.properties</exclude>
<exclude>more.properties</exclude>
...
</excludes>
</testResource>
</testResources>
</build>
</profile>
在weblogic.xml
中,区别在于上下文根名称和库引用(此lib还具有parallel-dev和dev分支)。
答案 0 :(得分:0)
我会做以下事情:
dev
分支中的这两个文件所做的更改。dev
分支并从parallel-dev
分支重新创建它。dev
分支上的更改。现在,每当parallel-dev
分支上发生新的开发时,切换到dev
分支并执行:
git rebase parallel-dev
(或GUI工具中的等效操作)。
这会将dev
分支重置为最新版本的parallel-dev
,并将隔离的更改重新应用于这两个xml文件。
如果对parallel-dev
的更改恰好与孤立的更改重叠,您仍然会遇到合并冲突,否则您应该好好去。 (虽然我会仔细检查.xml文件只是为了安全)
答案 1 :(得分:0)
我会在你的项目中创建两个Maven子模块,将代码保存在父模块中,但子模块中的配置不同。这样您就不需要两个不同的分支,因此您可以摆脱所有相关的合并冲突。
父母POM的相关部分:
<modules>
<module>dev</module>
<module>paralleldev</module>
</modules>
在子模块中,您只需要创建特定的POM和src/main/resources
文件夹,并在POM中包含来自父级的源。与子模块相关的部分:
<build>
<sourceDirectory>../src/main/java</sourceDirectory>
</build>
您可以使用Maven编译器插件执行更多操作 - 请查看此处:Guide to Using Maven when You Can't Use the Conventions