【发布时间】: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 源文件的位置 (
<sourceDirectory>src/main/java</sourceDirectory>)。那不应该是必要的。顺便把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