【发布时间】:2018-08-19 15:39:20
【问题描述】:
我正在使用自定义目录结构,并在sourcedirectory 标记中指定了目录。但我仍然收到消息No sources to compile。虽然构建成功了。
我的目录结构:
所以我使用的是java,而不是src/main/java。 (而且我有这样做的理由,所以现在无法切换到src/main/java)
这是我的 pom.xml:
<artifactId>application</artifactId>
<name>application</name>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.test.skip>true</maven.test.skip>
</properties>
<build>
<sourceDirectory>java</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<excludes>
<exclude>**/old/**/*.java</exclude>
</excludes>
<includes>
<include>java/com/**/*.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<excludes>
<exclude>**/old/**/*.java</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.start.Start</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
当我运行命令 mvn clean package 时,我得到以下输出:
源未编译,生成的 jar 为空。我提到的使用 maven 的自定义目录结构的所有来源都说使用 sourceDirectory 应该可以解决问题。但就我而言,它并没有解决
编辑
我正在使用自定义目录结构,因为使用标准目录结构对我不起作用。她的我的问题与此有关: Getting error in linking a source folder in eclipse maven
EDIT2:
我在 java 目录中链接源代码。也就是说,在文件系统上,application->java 不存在,但是在eclipse中通过链接源选项,我从不同的目录添加了Java源文件夹。因此它出现在eclipse中。我还使用 mvn 命令行以及通过 eclipse 运行了 maven 命令。
【问题讨论】:
-
如果您的平台支持符号链接,这可能是一个更好的主意。
-
如果不遵循“约定优于配置”范式,为什么还要使用 Maven?这实际上是 Maven 的意义所在,不进行配置。
-
@Bevor 我尝试使用约定,但仍坚持使用约定。请参阅我的另一个问题:stackoverflow.com/q/49186072/2458858。我也无法使其以传统方式工作。
-
您的目标是让它以传统方式工作还是以这种方式工作?如果您使用
mvn archetype:generate -DgroupId=com.yourdomain -DartifactId=application -DarchetypeArtifactId=maven-archetype-archetype创建项目,它开箱即用。 (顺便说一句。通常使用 mvn install 而不是 mvn package) -
我可以使用不在 src/main/java 中但在 java 中且没有任何 maven 设置的类来实现此功能(但是当我尝试时,Eclipse 在我的 java 文件夹中创建了一个包“应用程序”)在那里添加一个类),只需一个简单的 pom:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yourdomain</groupId> <artifactId>application</artifactId> <version>1.0-SNAPSHOT</version> </project>
标签: java eclipse maven maven-2