我很好奇如何设置开发与生产maven配置文件。我应该只在开发配置文件中放置快照repo,在生产配置文件中放置其他工件(本地存储库,发行版等)吗?
这些类型的不同配置文件有哪些主要内容?
答案 0 :(得分:2)
显然,主要区别在于Prod,Test和Dev配置文件中的设置。像
这样的事情/mnt/media
但是对于Prod,您可能需要S3 在这些配置文件中有所不同。
现在来发布,通常测试配置文件有SNAPSHOT版本(如夜间版本),配置为转到你的SNAPSHOT存储库。并且通常使用Maven Release Plugin发布Prod配置文件,该配置文件会自动从您的发布版本/工件中敲除SNAPSHOT。并配置为在RELEASES repo中存储工件。这些回购的配置类似于
<profile>
<id>test</id>
<distributionManagement>
<snapshotRepository>
<id>snapshotrepo</id>
<name>Repository for snapshots only</name>
<layout>default</layout>
<uniqueVersion>false</uniqueVersion>
<url>http://repo.company.com/snapshots</url>
</snapshotRepository>
</distributionManagement>
.....
.....
.....
<profile>
<id>prod</id>
</distributionManagement>
<repository>
<id>releaserepo</id>
<name>Final release artifacts</name>
<layout>default</layout>
<uniqueVersion>false</uniqueVersion>
<url>http://repo.company.com/releases</url>
</repository>
</distributionManagement>
....
....
这些回购的凭证进入settings.xml
。
开发配置文件通常没有配置为发布到公司仓库(因为它太混乱了无用的工件),它只是安装在您的本地仓库中,如SNAPSHOT并在每个构建上覆盖。
答案 1 :(得分:1)
通常(根据我的经验)不同的repos在settings.xml中配置,而不是在单独的配置文件中配置(默认情况下可能在配置文件中除外)。
默认配置文件的示例:
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central</id>
<url>http://some_url/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<url>http://some_url/content/groups/public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
如果您担心版本中存在SNAPSHOT依赖项,可以使用maven-release-plugin之类的工具来验证项目中是否存在SNAPSHOT依赖项。
这些类型的不同配置文件有哪些主要内容?
您经常使用配置文件在不同的构建环境之间进行分隔。例如,使用CI时,您经常将插件用于静态代码分析,报告,测试覆盖等,只能在CI服务器上构建时激活(因为启用这些工具需要更多时间来运行它)。 / p>
另一个用途是分离出应用程序的特定部分,例如,您不希望验证测试子模块在每个mvn测试中运行,但有时仅在启用 mvn test -p acceptanceTests <时/ strong>个人资料
环境特定版本的问题
现在,配置文件有时用于分离连接字符串,连接点等配置。在我看来,这并不理想,因为您最终会使用特定于环境的构建。有时这很难避免,但大多数时候这可以通过外部化配置来解决(确保有适当的配置管理),并在dev / test / prod中使用相同的二进制工件。这样你就可以确定通过系统测试的构建与prod等中的构建相同。