当前位置: 首页 > article >正文

007-构建工具大进步:Amper Amper Amper!

在这里插入图片描述

Amper Amper Amper!

今天天气不好,送孩子上少年宫之后就在茶馆里坐着。突然看到一个帖子:Project configuration with Amper,看得心情大好。

用Kotlin也有个大概几年的时间,开发了几个小工具,感觉很是不错。但是配置起来确实是个大问题,gradle那一套挺好用,功能非常强大,整起来心智负担不是一般大。前面都写了几个笔记,自己用的时候还要经常去翻,配置里面的一些细节,还要去拷贝代码。而且gradle到gradle.kts,也是一个麻烦的东西。Maven用得比较少,以前读书的时候XML发一篇小文章把胃口搞坏了。Ant用过几次,Java年代,感觉不太喜欢。

看到Amper之后,立马准备试一下,终于可以现代化一次。Java社区和新的Kotlin社区,可真是慢慢都成了守旧势力。所有新的语言都提供了非常好用的项目管理、依赖管理、构建工具一体化的方案,唯独Java体系还在修修补补。终于,守旧势力被冲了,Amper出现了。

Amper是什么?

Amper是JetBrains公司开发的一个项目配置工具,用于Kotlin Multiplatform项目。它的目标是简化项目配置。这句废话……

我最关心的就是Amper可以用独立运行的方式来管理项目。

(base) PS C:\prjs\amper> ./amper --help
Usage: amper [<options>] <command> [<args>]...

Options:
  --version                                Show the version and exit
  --root=<path>                            Amper project root
  --log-level=(debug|info|warn|error|off)  Console logging level (default: INFO)
  --shared-caches-root=<path>              Path to the cache directory shared between all Amper projects (default:
                                           C:\Users\User\AppData\Local\Amper)
  --async-profiler                         Profile Amper with Async Profiler
  --build-output=<path>                    Root directory for build outputs. By default, this is the 'build' directory
                                           under the project root.
  -h, --help                               Show this message and exit

Commands:
  build                Compile and link all code in the project
  clean                Remove the project's build output and caches
  clean-shared-caches  Remove the Amper caches that are shared between projects
  init                 Initialize a new Amper project based on a template
  modules              List all modules in the project
  publish              Publish modules to a repository
  run                  Run your application
  settings             Print the effective Amper settings of each module
  task                 Execute any task from the task graph
  tasks                List all tasks in the project and their dependencies
  test                 Run tests in the project
  tool                 Run a tool
  update               Update Amper to the latest version
(base) PS C:\prjs\amper>

最基本的工作流程大概会是:

编译
运行
测试
init
build
run
test

这里面,新建项目的命令init的格式大概就是:

(base) PS C:\prjs\amper> ./amper init -h
Usage: amper init [<options>] [<template>]

  Initialize a new Amper project based on a template

Options:
  -h, --help  Show this message and exit

Arguments:
  <template>  project template name substring, e.g., 'jvm-cli'

目前支持的模板有:

  • compose-android
  • compose-desktop
  • compose-ios
  • compose-multiplatform
  • jvm-cli
  • kmp-lib
  • multiplatform-cli

Amper的优势

Amper的优势很简单:

下面两个文件就能够构成一个完整的项目:

product: jvm/app

dependencies:
  - $compose.desktop.currentOs

settings:
  compose: enabled


repositories:
  - id: public
    url: https://maven.aliyun.com/repository/public/
  - id: central
    url: https://maven.aliyun.com/repository/jcentral/
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.text.BasicText
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application

@Composable
@Preview
fun App() {
    MaterialTheme {
        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally,
        ) {
            BasicText("Hello, World!")
        }
    }
}

fun main() = application {
    Window(onCloseRequest = ::exitApplication) {
        App()
    }
}

目录结构大概就是:

|-- amper.yaml
|-- amper
|-- amper.bat
|-- src
    |-- Main.kt

这里面两个amper/amper.bat就是Amper的全部内容,只需要下载一次,之后只要引用运行一下,就会在项目目录下面拷贝这两个文件。

整个项目./amper.bat build./amper.bat stest./amper.bat run。对于Java/Kotlin这边来说,这简直就是天堂。

与Gradle合作

当然,Amper现在没有那个Compose常用的产生本地可运行程序的功能。所以Amper还设计了一套机制,就是作为Gradle的插件存在。这个时候,一个项目的目录结构就会变成:

|-- amper.yaml
|-- amper
|-- amper.bat
|-- src
    |-- Main.kt
|-- build.gradle.kts
|-- settings.gradle.kts
|-- gradlew
|-- gradlew.bat
|-- gradle
    |-- wrapper
        |-- gradle-wrapper.jar
        |-- gradle-wrapper.properties

这个时候,Amper可以单独运行,也可以作为Gradle的插件运行,大量的配置都可以放在amper.yaml里面,Gradle的配置就可以简化很多。一般而言,Compose的配置文件build.gradle.kts会变成:

compose.desktop {
    application {
        mainClass = "MainKt"
        nativeDistribution {
            packageName = "HelloCompose"
        }
    }
}

仅仅需要这样,Gradle只是用来产生本地可运行程序,其他的都交给Amper。

总结

  1. Amper赛高。
  2. Amper可以独立运行,也可以作为Gradle插件运行。
  3. Amper的配置文件简单,易读。
  4. Amper有一个问题就是Repositories的配置,在yaml文件中设置的时候,库还是排在系统默认的三个库的后面……你懂的,我还去提了一个issue……

http://www.kler.cn/a/461516.html

相关文章:

  • Node.js 中 http 模块的深度剖析与实战应用
  • 微信小程序获取后端数据
  • HTML 字符编码
  • 标准库以及HAL库——按键控制LED灯代码
  • 计算机创造的奇迹——C语言
  • Linux命令——3.网络与用户
  • 论文研读:Tune-a-video — 微调学习单个视频内的物体动作(Arxiv: 2023-03-17)
  • 智能边缘计算×软硬件一体化:开启全场景效能革命新征程(高校开发者作品)
  • 【MySQL初级】第5-11章
  • 职场中倾听比表达更显智慧
  • 【传感器技术】第7章 温度传感器,热电偶,热电阻,热敏电阻,集成温度传感器
  • Prometheus + Grafana 监控,验证 Hystrix 超时熔断
  • 期末速成C++【模板和STL和算法】
  • sqlserver设置定时任务计划(SSMS)
  • 遗传算法的介绍
  • REDIS2.0
  • vue项目中使用mockjs模拟后端接口
  • 9-Gin 中自定义 Model --[Gin 框架入门精讲与实战案例]
  • ARM64 Windows 10 IoT工控主板运行x86程序效率测试
  • 使用OpenAI、LangChain、MongoDB构建一个AI agent
  • Spring Boot 实战篇(四):实现用户登录与注册功能
  • UE5.1安卓打生包,常用操作
  • python进阶-06-Selenium一个真实项目实战,还有FastAPI背景介绍
  • RabbitMQ基础篇之快速入门
  • 扫码跳转小程序获取参数
  • 从0入门自主空中机器人-2-1【无人机硬件框架】