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

如何在 maven 中 jar 其目录结构与源代码目录不相似的文件?

澹台硕
2023-03-14

我写了一个pom.xml来编译目录"D:\Windchill_Market\ERP Connector\SourceCode\Build\src1\src\main\java\com\sample"中的java文件

现在,我必须 jar 目录中的所有文件“D:\Windchill_Market\ERP 连接器\源代码\Build\src1”。

在我的pom.xml中:

<sourceDirectory>D:\Windchill_Market\ERP Connector\SourceCode\Build\src1\src\main\java</sourceDirectory>
<plugins>  
    <plugin>                    
        <groupId>org.apache.maven.plugins</groupId>             
        <artifactId>maven-compiler-plugin</artifactId>              
        <version>2.5.1</version>              

    </plugin>   
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我可以生成类文件。但我无法从所需目录中jar所有文件。只有sourceDirectory中的文件受到干扰。我尝试在maven源插件中使用include标记。但它不起作用。

请帮帮忙。

谢谢

共有3个答案

帅德惠
2023-03-14

这个Maven特性对于JavaFX项目来说是致命的。在Eclipse中运行-一切正常。开始时,Make jar-get“javafx jar java.lang.IllegalStateException:Location is not set”。解决方案:将资源文件(fxml、png等)放入源包内的文件夹(此处为src/MyProjectName/javafx),然后更改pom文件:

<sourceDirectory>src</sourceDirectory>
<resources>
  <resource>
    <!-- initially Maven makes this string <directory>src</directory> -->
    <directory>MyProjectName/javafx</directory>
    <excludes>
      <exclude>**/*.java</exclude>
    </excludes>
  </resource>
</resources>
陈浩
2023-03-14

maven-source-plugin做了它应该做的事情。它在src/main/java中存储源代码。它可能也包括src/main/Resources,不确定。

如果你设法让它从项目的根目录开始存档所有东西,你就滥用了它。为了让Maven正确使用生成的JAR,它的内部结构必须反映普通JAR的结构——所以所有的包都必须在那里,只是里面的文件是“. java”而不是“. class”。如果不是这样,Eclipse或其他工具将找不到这些源文件。

如果您想创建项目的所谓“源分发版”,您应该看看Maven Assembly插件。它允许您以非常灵活的方式从项目中创建包。这需要一个更长的答案来引导你完成这个过程。更好地阅读插件的文档,当您有更具体的问题时再回来。有一个预定义的配置可能适合您的情况。

简而言之,这样的事情应该是可行的:

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <descriptorRefs>
        <descriptorRef>src</descriptorRef>
      </descriptorRefs>
    </configuration>
  </plugin>
丁俊智
2023-03-14

Maven对源文件和其他文件(称为resources)使用不同的文件夹。它从src\main\java编译所有。java文件并打包生成的。类文件放入jar中。据我所知,该目录中的所有其他文件都将被忽略。

现在,如果您想打包其他文件,请将它们放在< code>src\main\resources中。

编辑

要手动指定资源目录,请添加

<resources>
    <resource>
        <directory>D:\Windchill_Market\ERP Connector\SourceCode\Build\src1\src\main\resource</directory>
    </resource>
</resources>

到你的

 类似资料:
  • Electron 的源代码主要依据 Chromium 的拆分约定被拆成了许多部分。 为了更好地理解源代码,您可能需要了解一下 Chromium 的多进程架构​ 源代码结构 1 Electron 2 ├── atom/ - C ++源代码. 3 | ├── app/ - 系统入口代码 4 | ├── browser/ - 前端包含了主窗口、UI 和其他所有与主进程有关的东西,它会告诉渲染进程如何管理

  • Electron 的源代码主要依据 Chromium 的拆分约定被拆成了许多部分。 为了更好地理解源代码,您可能需要了解一下 Chromium 的多进程架构。 源代码的结构 Electron ├──atom - Electron 的源代码 | ├── app - 系统入口代码 | ├── browser - 包含了主窗口、UI 和其他所有与主进程有关的东西,它会告诉渲染进程如何管理页面 |

  • Electron 的源代码主要依据 Chromium 的拆分约定被拆成了许多部分。 为了更好地理解源代码,您可能需要了解一下 Chromium 的多进程架构。 Source Code Directory Structure The source code of Electron is separated into a few parts, mostly following Chromium on

  • Electron 的源代码主要依据 Chromium 的拆分约定被拆成了许多部分。 为了更好地理解源代码,您可能需要了解一下 Chromium 的多进程架构。 源代码的目录结构 Electron ├── build/ - Build configuration files needed to build with GN. ├── buildflags/ - Determines the set o

  • 为了更好地理解源代码,您可能需要了解一下 。 其他目录的结构 tools - 在 gyp 文件中用到的工具脚本,但与 目录不同, 该目录中的脚本不应该被用户直接调用 vendor - 第三方依赖项的源代码,为了防止人们将它与 Chromium 源码中的同名目录相混淆, 在这里我们不使用 作为目录名 out - 的临时输出目录 dist - 由脚本 创建的临时发布目录

  • 问题内容: 除了文件夹,我们还有一个文件夹,其中包含一些主要源所需的生成的Java源。必要时 手动 调用代码生成。生成的源被 检 入到源仓库中。一切将被构建并打包 在一起 。 将与主要源一起编译的生成的Java 源 的最佳位置是什么?应该是: (遵循用于集成测试的相同命名逻辑) (与 “ src目录包含用于构建项目的所有源材料” 冲突) (嗯… 不是一种类型) …? 对于这种情况,第一种选择似乎是