【问题标题】:Is it possible to define the environment for the javacpp-preset in the pom?是否可以在 pom 中为 javacpp-preset 定义环境?
【发布时间】:2020-01-22 23:10:42
【问题描述】:

是否可以在 pom.xml 文件中定义 javacpp-presets (opencv-platform) 的目标环境?我知道您可以在执行mvn clean install 时设置-Djavacpp.platform 属性。这将激活正确的 Maven 配置文件,并且不会将其他系统库添加到最终的 jar 中。但是有没有机会直接在pom中定义平台来避免执行maven时的-D参数呢?

谢谢!

【问题讨论】:

    标签: java maven javacpp


    【解决方案1】:

    这是我想出的解决方案:

    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>opencv</artifactId>
        <version>${opencv.version}</version>
    </dependency>
    
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>opencv</artifactId>
        <version>${opencv.version}</version>
        <classifier>${os.detected.classifier}</classifier>
    </dependency>
    

    ${os.detected.classifier}可以在 pom.xml 中设置。我正在将此属性与以下构建扩展一起使用:

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.1</version>
            </extension>
        </extensions>
    ...
    

    此扩展 (https://github.com/trustin/os-maven-plugin) 将在构建时检测操作系统并通过此属性设置正确的分类器。

    【讨论】:

    • 是的,这几乎是唯一的方法,尽管我们可以使用父文件 pom.xml 来获取该属性:github.com/bytedeco/javacpp-presets/blob/master/pom.xml#L1920 但这种方法的问题在于它没有传递性地工作。这不是一种可扩展的方法,因此您会一遍又一遍地遇到同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多