Структура пользовательских каталогов Maven - нет источников для компиляции, несмотря на указание sourceDirectory

Я использую настраиваемую структуру каталогов и указываю каталог в теге sourcedirectory. Но все же я получаю сообщение " No sources to compile. Хотя сборка выполнена успешно.

Моя структура каталогов:

enter image description here

Поэтому вместо src/main/java я использую 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, я получаю следующий вывод:

enter image description here

Источник не скомпилирован, и результирующая банка пуста. Все источники, о которых я говорил для использования пользовательской структуры каталогов с maven, говорят, что использование sourceDirectory должно решить проблему. Но в моем случае это не решает

РЕДАКТИРОВАТЬ

Я использую настраиваемую структуру каталогов, поскольку использование стандартной структуры каталогов для меня не работало. Мой вопрос связан с этим: Получение ошибки при связывании исходной папки в eclipse maven

EDIT2:

Я связываю источник в каталоге java. То есть, в файловой системе application-> java не существует, но в опции eclipse через источник ссылок я добавил исходную папку Java из другого каталога. Поэтому он появляется в затмении. Также я запускал команды maven с командной строкой mvn, а также через eclipse.

Ответы

Ответ 1

Если я правильно понимаю вашу проблему, у вас есть папка приложения, а фактическая папка источника (java) находится где-то еще в файловой системе. И вы связали внешнюю папку как источник java через eclipse для компиляции.

Связываясь в Eclipse, maven не будет автоматически знать, где находятся исходные файлы. Maven следует стандартной структуре каталогов для поиска java и тестовых файлов. Вы можете использовать этот плагин Build Helper для настройки того, как maven ищет источники.

Пример, который здесь говорил

Ответ 2

Это ваша проблема: <include>java/com/**/*.java</include> Вы не должны включать в себя исходный каталог, только пути к нему.

Ответ 3

Выполните следующие шаги этого рабочего примера и сравните его шаг за шагом с вашим проектом, чтобы выяснить, что не так:

  • создайте папку.
  • создайте внутри папки файл pom.xml со следующим содержимым:

<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">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.yourdomain.yourproject</groupId>
	<artifactId>yourapp</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>yourapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.javadoc.skip>true</maven.javadoc.skip>
	</properties>

	<dependencies>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.9</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.5</version>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<mainClass>com.yourdomain.yourproject.content.Main</mainClass>
						</manifest>
					</archive>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<appendAssemblyId>false</appendAssemblyId>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id> <!-- this is used for inheritance merges -->
						<phase>package</phase> <!-- bind to the packaging phase -->
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>2.5.1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8.2</version>

				<dependencies>
					<dependency>
						<groupId>org.jvnet.wagon-svn</groupId>
						<artifactId>wagon-svn</artifactId>
						<version>1.12</version>
					</dependency>
				</dependencies>

			</plugin>
		</plugins>
	</build>
</project>