@ohos/hpm-cli-x2h

generate bundle.json by pom.xml|package.json, then publish to hpm

Usage no npm install needed!

<script type="module">
  import ohosHpmCliX2h from 'https://cdn.skypack.dev/@ohos/hpm-cli-x2h';
</script>

README

x2h (hpm cli plugin)

HPM CLI 插件X2H,转换Maven/Gradle/NPM包为hpm包并发布到HPM仓库.

如何安装?(独立使用)

npm install -g @ohos/hpm-cli-x2h

如何使用x2h命令?

x2h  <类型> [选项]

选项

  • -p 或 preview ---只预览生成的包,不发布

类型

  • gradle ---从通过maven插件先根据gradle.build生成pom4hpm.xml,再转换为bundle.json
  • maven ---从pom.xml转换为bundle.json
  • npm ---从package.json转换为bundle.json

集成在HPM-CLI使用(hpm-cli 1.1.0以上版本)

从Gradle转换

在build.gradle编译脚本中添加如下脚本,执行publish2hpm任务(或者将publish2hpm发布后操作)

plugins {
    id 'maven'
}

task publish2hpm {
    pom {
        project {
            url "https://www.your.site"
            properties = [
                "hpm.bundle.name":'@your_organizaition/bunle_name',
                "hpm.bundle.tags":"foo,bar",
                "hpm.bundle.keywords":"foo,bar",
                "hpm.bundle.dirs":'{"lib":["build/outputs/*ar/release/*.*ar"]}'
            ]
        }
    }.writeTo("pom4hpm.xml")
    doLast{
        if (System.properties['os.name'].toString().startsWith('Windows'))
            ['cmd', '/c', 'hpm','x2h','gradle'].execute()
        else
            "hpm x2h gradle".execute()
    }
}

从Maven转换

在pom.xml文件中project下增加如下信息

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>hpm-publish</id>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <phase>deploy</phase>
                        <configuration>
                            <executable>hpm</executable>
                            <arguments>
                                <argument>x2h</argument>
                                <argument>maven</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <properties>
        <hpm.bundle.name>@your_organizaition/bunle_name</hpm.bundle.name>
        <hpm.bundle.tags>ui,image</hpm.bundle.tags>
        <hpm.bundle.keywords>foo,bar</hpm.bundle.keywords>
        <hpm.bundle.dirs>{"lib":["build/outputs/*ar/release/*.*ar"]}</hpm.bundle.dirs>
    </properties>

从npm转换

在package.json文件中增加如下信息

  "scripts":{
    "postpublish":"hpm x2h npm"
  },
  "hpm":{
    "bundle.name":"@your_organizaition/bundle"
  }

注意

| hpm 的组件命名规则 为 @organization/bundle_name格式,organization为hpm平台注册的组织名,bundle_name只能由小写字母、数字、_构成,不超过200,故不能直接使用Maven、NPM的包名。