【问题标题】:Maven path to file inside a dependency jar依赖 jar 中文件的 Maven 路径
【发布时间】:2021-03-26 18:12:44
【问题描述】:

我有一个 maven 插件,我想通过提供一个指向依赖 jar 中的文件/目录的路径来配置它。

这是我的 maven 项目 pom.xml 的示例。它有一个带有依赖项的插件,该插件有一个属性作为其execution 的一部分,称为templateDirectory。我想在此处放置插件依赖项mylang-swagger-codegen 的路径到依赖项内的文件/目录 { Some path }/src/resources/api/

我怎样才能到达这条路?我了解${project.basedir} 之类的参考资料可以参与该项目。有没有办法可以引用依赖项并在 jar 中访问我想要的文件/目录?

<plugin>
    <groupId>io.swagger</groupId>
        <artifactId>swagger-codegen-maven-plugin</artifactId>
        <version>2.4.19</version>
        <executions>
            <execution>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <inputSpec>${project.basedir}/api/swagger.yaml</inputSpec>
                    
                    <language>myLang</language>
      

        <templateDirectory>    <!-- Path here to api.mustache -->      </templateDirectory>
                    



            </execution>
        </executions>

        <dependencies>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>mylang-swagger-codegen</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>

【问题讨论】:

  • 您需要将其作为资源加载。
  • @JFabianMeier 你能解释一下在我的情况下这意味着什么

标签: java maven


【解决方案1】:

Jar 文件基于 .zip 构建。也许一个解开依赖关系的 Maven 插件可以帮助你完成你想要完成的事情。

看看这个解压一个特定的工件:https://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-artifacts.html

或者这个,解压项目依赖:https://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-project-dependencies.html

运行此插件后,您可以访问解压jar的路径。在上面的示例中,插件在 maven 的“包”阶段运行。如果要更改顺序,请查看 maven 构建阶段:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

【讨论】:

  • 有没有办法避免这种情况?所以 Jar 可以被解释为一个压缩的 zip——但是 jar 压缩不正确?
  • 据我所知,jar 文件是使用标准 ZIP 压缩进行压缩的。您可以像这样以编程方式访问 jar 中的文件:stackoverflow.com/questions/5171957/access-file-in-jar-file 我不确定 maven 中是否有更好的方法来执行此操作,除了先解包。
猜你喜欢
  • 2022-01-22
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2015-05-12
相关资源
最近更新 更多