【问题标题】:class files not created under maven target directory in IntelliJ未在 IntelliJ 的 maven 目标目录下创建的类文件
【发布时间】:2016-09-16 01:58:54
【问题描述】:

我创建了一个简单的 maven 项目来创建阴影 jar。我使用 mvn clean compile 构建了它。它创建了 jar 文件,但是在提取它之后我看不到与我的项目 java 源文件相对应的 .class 文件。我在构建时清楚地看到了下面的消息,但在目标目录下看不到任何 .class 文件。

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ PersonalizationFeeder ---

[INFO] 检测到更改 - 重新编译模块!

[WARNING] 文件编码尚未设置,使用平台编码 UTF-8,即构建依赖于平台!

[INFO] 编译 10 个源文件到 Documents/PersonalizationFeeder/target/classes [信息] --------------------------------------------- --------------------------

[信息] 构建成功

这里有什么问题?我的 pom.xml 是这样的。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
    <artifactId>data-analytics</artifactId>
    <groupId>com.wooplr</groupId>
    <version>0.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>PersonalizationFeeder</artifactId>
<packaging>jar</packaging>
<properties>
    <userlib.dir>Documents/userlibs</userlib.dir>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>${spark.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-kafka_2.10</artifactId>
        <version>${spark.version}</version>
    </dependency>        
    <dependency>
        <groupId>com.wooplr</groupId>
        <artifactId>jedis</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${userlib.dir}/jedis-2.7.3.jar</systemPath>
    </dependency>
</dependencies>

<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.2</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <artifactSet>
                        <excludes>
                            <exclude>junit:junit</exclude>

                            <exclude>org.apache.maven:lib:tests</exclude>
                        </excludes>
                    </artifactSet>
                    <filters>
                        <filter>
                            <!--<artifact>*:*</artifact>-->
                            <excludes>
                                <excludeScope>system</excludeScope>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

【问题讨论】:

  • Documents/PersonalizationFeeder/target/classes 中有什么?您的期望尚不清楚,IntelliJ 在这方面有什么作用?
  • 为什么要明确设置 java 源文件的位置 (&lt;sourceDirectory&gt;src/main/java&lt;/sourceDirectory&gt;)。那不应该是必要的。顺便把maven-shade-plugin去掉,jar看起来怎么样。
  • @RC : Documents/PersonalizationFeeder/target/classes 目录是空的。理想情况下,它应该创建我的源文件的 .class 文件,对吧?我期望的是,我的阴影 jar(一旦它被创建)应该包含我的源文件的 .class 文件。但我没有看到他们。我在这里做错了吗?
  • @uniknow,我也试过没有明确设置 sourceDirectory,但它没有创建我的源文件的 .class 文件。无论有没有 maven-shade-plugin,.class 文件都不包含在创建的 jar 中。
  • 你可以使用不同的工具来仔细检查 .class 文件不存在吗?比如windows资源管理器或者命令行?它们可能已创建,但从视图中过滤掉了。

标签: java maven intellij-idea


【解决方案1】:

问题解决了……!!在其中一个依赖 jar 中,有许可的 jar,因此无法正确构建。为了解决这个问题,我必须提取那个特定的依赖 jar 并从 META-INF/ dir 中删除 .RSA、.DSA 和 *.SF 文件,然后使用 jar -cf 命令使其成为 jar,然后使用这个新的 jar 作为依赖。它对我来说很好。谢谢大家。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 2019-05-22
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多