当前位置: 首页 > 知识库问答 >
问题:

使用Maven构建和部署本机代码

匡翰
2023-03-14
  1. 没有任何好的插件来使用Maven构建本机代码。native-maven-plugin是一个非常严格的构建系统,除其他外,这使得调试结果的二进制文件变得困难。您必须手动将本机Maven-Plugin构建系统与用于调试的本机IDE同步。
  2. Maven没有替换部署的pom.xml文件中的变量:MNG-2971、MNG-4223。这意味着库必须在每个Maven配置文件中声明一次特定于平台的依赖关系(而不是声明一次依赖关系并为每个配置文件设置不同的分类器);否则,任何依赖于您的库的人都必须在他们的项目文件中重新定义这些相同的属性,以解决传递依赖关系。参见Maven:在依赖分类器中使用继承属性导致生成失败。
  3. Jenkins对跨不同平台(例如“shell”vs“batch”任务,以及跨多台计算机协调构建)运行类似逻辑的支持极差
  4. 在虚拟机中运行Windows、Linux和Mac太慢太脆弱了。即使您能够正常工作,尝试将VM配置为Jenkins的奴隶也是一个挫折的教训(您会经常出现间歇性构建错误)。
  5. Maven Central需要一个用于特定于平台的工件的主jar:OSSRH-975
  6. Sonatype OSS存储库托管和maven-release-plugin假设可以从一台机器以原子的方式发布项目,但我需要在不同的机器上构建特定于OS的比特。

我将使用这个Stackoverflow问题来记录我是如何克服这些限制的。

共有1个答案

丁文轩
2023-03-14

下面是我如何克服前述问题的:

  • 我使用CMake构建本机代码。这个系统的优点在于它为您最喜爱的(原生)IDE生成项目文件。您使用相同的项目文件来编译和调试代码。您不再需要手动同步两个系统。
    • Maven不支持CMake,所以我构建了自己的插件:https://github.com/cmake-maven-project/cmake-maven-project
    • 我计划在不久的将来研究http://www.mojohaus.org/flatten-maven-plugin/和https://github.com/mjiderhamn/promote-maven-plugin作为替代方案。
      null
      null

 类似资料:
  • 我的团队正在使用功能分支来实现新功能,并不断将快照构建部署到远程存储库中供我们的用户使用。因此,“部署”实际上只意味着“分发到远程Maven存储库”。我们目前只为master分支运行持续集成构建,而不是功能分支,原因如下:我们使用Maven构建我们的项目并将JavaDoc和源代码与JAR一起分发。 我现在的计划是为每个功能分支构建添加一个分类器,并期望在创建和部署如下工件时使用该分类器: > 分支

  • 十构建部署 待更新……

  • 问题内容: 我们在项目中使用Jenkins在开发环境上进行构建和部署。我已经在jenkins中使用maven成功创建了一个战争文件,现在我必须创建另一个作业才能将该战争文件部署到weblogic服务器中。 但是,我不知道在jenkins中配置此作业所需的步骤。仅仅调用一个maven deploy命令就可以了吗?有人可以告诉我使用jenkins将war文件部署到weblogic 10.3.5中需要采

  • 我遵循了https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤 但是当我尝试构建工件时,在最后一步中,我得到了这个错误 错误:Java FX Packager:无法生成工件-FX:Deploy在此JDK中不可用 这里有一个快速测试的hello world应用程

  • 我试图使用<code>原生映像maven插件

  • 如果你在手动的进行数据库结构的修改或者在更新文件前手动运行测试,请三思而后行!因为随着每一个额外的手动任务的添加都需要去部署一个新的版本到应用程序,这些更改会增加程序潜在的致命错误。即使你是在处理一个简单的更新,全面的构建处理或者持续集成策略,构建自动化绝对是你的朋友。 你可能想要自动化的任务有: 依赖管理 静态资源编译、压缩 执行测试 文档生成 打包 部署 部署工具 部署工具可以认为是一系列的脚