java - 폴더 - Maven 커스텀 디렉토리 구조-sourceDirectory를 지정 했음에도 불구하고 컴파일 할 소스가 없다.




src main resources (2)

사용자 지정 디렉터리 구조를 사용하고 sourcedirectory 태그에 디렉터리를 지정했습니다. 하지만 여전히 No sources to compile 이라는 메시지가 나타납니다. 빌드가 성공했지만.

내 디렉토리 구조 :

그래서 src/main/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 파일이 비어 있습니다. sourceDirectory 과 함께 커스텀 디렉토리 구조를 사용하여 언급 한 모든 소스는 sourceDirectory 를 사용하면 문제를 해결할 수 있다고 말합니다. 하지만 제 경우에는 해결되지 않습니다.

편집하다

내가 standar 디렉토리 구조를 사용하여 나를 위해 작동하지 않았 사용자 지정 디렉토리 구조를 사용하고 있습니다. 그녀의 '내 질문에 관련된 : 이클립스에서 소스 폴더를 연결하는 데 오류가 점점 메이븐

EDIT2 :

나는 자바 디렉토리에 소스를 연결하고있다. 즉, 파일 시스템에서 application-> java는 존재하지 않지만 링크 소스 옵션을 통해 Eclipse에서 다른 디렉토리의 Java 소스 폴더를 추가했습니다. 따라서 그것은 식으로 나타납니다. 또한 mvn 명령 줄뿐만 아니라 일식을 통해 maven 명령을 실행했습니다.


문제를 올바르게 이해하면 응용 프로그램 폴더가 있고 실제 소스 (java) 폴더는 파일 시스템의 다른 곳에서 온 것입니다. 그리고 컴파일을 위해 Eclipse를 통해 자바 소스로 외부 폴더를 연결했습니다.

Eclipse에서 링크하면, maven은 소스 파일의 위치를 ​​자동으로 알 수 없습니다. 메이븐 (Maven)은 자바와 테스트 파일을 찾는 표준 디렉토리 구조를 따른다. 이 Build Helper 플러그인 을 사용하여 메이븐이 소스를 찾는 방법을 사용자 정의 할 수 있습니다.

here 나온 예가 here


이 작업 예제의 다음 단계를 수행하고 프로젝트와 단계적으로 비교하여 무엇이 잘못되었는지 알아냅니다.

  • 폴더를 만듭니다.
  • 다음 내용으로 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>

  • 루트 폴더 내에이 폴더 구조를 만듭니다.

src / main / java / com / yourdomain / yourproject / content /

다음 내용으로 content 폴더에 Main.java 를 작성하십시오.

package com.yourdomain.yourproject.content;

public class Main
{
    public static void main(String[] args)
    {
        System.out.println("HELLO");
    }
}
  • 루트 폴더로 돌아가서 mvn clean install 실행하십시오.
  • 거기에 항아리가있는 대상 폴더가 생성됩니다.
  • java -jar target/yourapp-1.0-SNAPSHOT.jar 실행할 수 있습니다.




maven-2