2017-04-06 31 views
1

我試圖用Aspectj做AOP,但我不知道爲什麼不執行我的方面,它只是運行主類。這是我第一次這樣做,所以我可能會做錯事。AspectJ的建議不會在Maven多模塊設置中觸發

這是我的代碼:

的看點:

@Aspect 
public class YourAspect { 

    @Pointcut("@annotation(yourAnnotationVariableName)") 
    public void annotationPointCutDefinition(YourAnnotation yourAnnotationVariableName){ 
    } 

    @Pointcut("execution(* *(..))") 
    public void atExecution(){} 

    @Around("annotationPointCutDefinition(yourAnnotationVariableName) && atExecution()") 
    public Object aroundAdvice(ProceedingJoinPoint joinPoint, YourAnnotation yourAnnotationVariableName) throws Throwable { 
     if(yourAnnotationVariableName.isRun()) { 
      Object returnObject = null; 

      try { 
       System.out.println("aspects.YourAspect's aroundAdvice's body is now executed Before yourMethodAround is called."); 
       returnObject = joinPoint.proceed(); 
      } catch (Throwable throwable) { 
       throw throwable; 
      } finally { 
       System.out.println("aspects.YourAspect's aroundAdvice's body is now executed After yourMethodAround is called."); 
      } 
      return returnObject; 
     } 
     return joinPoint.proceed(); 
    } 

    @After("annotationPointCutDefinition(yourAnnotationVariableName) && atExecution()") 
    public void printNewLine(JoinPoint pointcut, YourAnnotation yourAnnotationVariableName){ 
     System.out.print("End\n\r"); 
    } 
} 

註釋:

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface YourAnnotation { 
    public boolean isRun() default true; 
} 

主類:

public class MainClass{ 
    public static void main(String[] args) { 
     MainClass yourClass = new MainClass(); 
     yourClass.yourMethodAround(); 
    } 

    @YourAnnotation 
    public void yourMethodAround(){ 
     System.out.println("Executing TestTarget.yourMethodAround()"); 
    } 
} 

我有兩個工作模塊和POMs廁所KS這樣的:

Aspect的POM:

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

     <groupId>Group</groupId> 
     <artifactId>Aspects</artifactId> 
     <version>1.0-SNAPSHOT</version> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>aspectj-maven-plugin</artifactId> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
       </plugin> 
      </plugins> 
     </build> 

     <dependencies> 
      <dependency> 
       <groupId>org.aspectj</groupId> 
       <artifactId>aspectjweaver</artifactId> 
       <version>1.8.10</version> 
      </dependency> 
     </dependencies> 

    </project> 

主要POM:

<?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"> 
     <modelVersion>4.0.0</modelVersion> 
    <groupId>Group</groupId> 
    <artifactId>Main</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>aspectj-maven-plugin</artifactId> 
        <version>1.7</version> 
        <configuration> 
         <complianceLevel>1.8</complianceLevel> 
         <source>1.8</source> 
         <target>1.8</target> 
         <aspectLibraries> 
          <aspectLibrary> 
           <groupId>Group</groupId> 
           <artifactId>Aspects</artifactId> 
          </aspectLibrary> 
         </aspectLibraries> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>compile</goal> 
           <goal>test-compile</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.5.5</version> 
        <configuration> 
         <appendAssemblyId>false</appendAssemblyId> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <archive> 
          <manifest> 
           <mainClass>aspects.MainClass</mainClass> 
          </manifest> 
         </archive> 
        </configuration> 
        <executions> 
         <execution> 
          <id>a-make-assembly</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>aspects.MainClass</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>Group</groupId> 
      <artifactId>Aspects</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</project> 

我MVN全新安裝了這兩個項目,然後MVN高管:Java中的主要項目,它只是運行該方法,而不是方面。誰能幫我?

謝謝!

+0

你是否真的在切入點中使用'yourAnnotationVariableName'?它應該有註釋類型作爲它的參數https://blog.jayway.com/2015/09/08/defining-pointcuts-by-annotations/ –

+0

我跟着那個網頁。在我的切入點中使用yourAnnotationVariableName意味着什麼?你能解釋一下嗎? – Motomine

+0

有關Maven多模塊項目的一般問題和錯誤假設以及如何使用AspectJ Maven插件。例如,aspect模塊不會配置任何插件版本,也不會將主模塊用作父級模塊。即使它確實如此,它也意味着一個循環引用,因爲如果aspect模塊依賴於main和main將方面作爲依賴關係,那麼就無法編譯。我建議你創建一個共同的家長,然後創建一個具有正確配置的應用程序和一個方面模塊(我可以幫你解決這個問題)。 – kriegaex

回答

0

好的,你走吧。我沒有將不同項目/包中的內容分開,以儘可能簡單。

項目的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"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>Group</groupId> 
    <artifactId>Main</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.8.10</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>aspectj-maven-plugin</artifactId> 
       <version>1.7</version> 
       <configuration> 
        <complianceLevel>1.8</complianceLevel> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>yourpackage.AspectJRawTest</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 

    </build> 
</project> 

註釋(你正確地寫了這一個):這將運行註釋方法前

package yourpackage; 

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface MyCustomAnnotation { 
    public boolean isRun() default true; 
} 

定製的建議。我不知道這一個,術語不完全清楚,我...但它似乎工作:)

package yourpackage; 

import org.aspectj.lang.JoinPoint; 
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 

@Aspect 
public class MyCustomAspect { 
    @Before("execution(* *.*(..)) && @annotation(MyCustomAnnotation)") 
    public void advice(JoinPoint joinPoint) { 
     System.out.printf("BINGO! advice() called before '%s'%n", joinPoint); 
    } 
} 

最後,主類:

package yourpackage; 

public class AspectJRawTest { 

    public static void main(String[] args) { 
     System.out.println("custom annotation playground"); 

     ISomething something = new SomethingImpl(); 

     something.annotatedMethod(); 
     something.notAnnotatedMethod(); 
    } 

} 

interface ISomething { 
    void annotatedMethod(); 

    void notAnnotatedMethod(); 
} 

class SomethingImpl implements ISomething { 
    @MyCustomAnnotation 
    public void annotatedMethod() { 
     System.out.println("I am annotated and something must be printed by an advice above."); 
    } 

    public void notAnnotatedMethod() { 
     System.out.println("I am not annotated and I will not get any special treatment."); 
    } 
} 

我與Maven構建它像這樣:mvn clean compile assembly:single創建一個包含依賴關係的可執行jar。然後,執行:

java -jar target/Main-1.0-SNAPSHOT-jar-with-dependencies.jar 
custom annotation playground 
BINGO! advice() called before 'execution(void yourpackage.SomethingImpl.annotatedMethod())' 
I am annotated and something must be printed by an advice above. 
I am not annotated and I will not get any special treatment. 

我會稍後的地方上傳一個完整的項目,爲您提供a link,但我已經發布應該是足夠的。

我已經在IDEA中測試過了,我無法配置它爲我做適當的編織(命名任何其他IDE,您將得到相同的問題)。但我現在沒時間了,你必須自己處理這個任務。好消息,這一定是可能的,因爲所有事情都可以在裸機上運行。

1

這是一個多模塊解決方案。

主要POM(母公司爲所有其他人):

這裏我們定義了所有插件與基本配置(更具體的配置可以在「應用程序」模塊中)和管理所有的依賴版本。

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>de.scrum-master.stackoverflow</groupId> 
    <artifactId>main</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.source-target.version>1.8</java.source-target.version> 
    <aspectj.version>1.8.10</aspectj.version> 
    </properties> 

    <build> 
    <pluginManagement> 
     <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
      <configuration> 
      <source>${java.source-target.version}</source> 
      <target>${java.source-target.version}</target> 
      <!-- IMPORTANT --> 
      <useIncrementalCompilation>false</useIncrementalCompilation> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.10</version> 
      <configuration> 
      <!--<showWeaveInfo>true</showWeaveInfo> --> 
      <source>${java.source-target.version}</source> 
      <target>${java.source-target.version}</target> 
      <Xlint>ignore</Xlint> 
      <complianceLevel>${java.source-target.version}</complianceLevel> 
      <encoding>${project.build.sourceEncoding}</encoding> 
      <!--<verbose>true</verbose> --> 
      <!--<warn>constructorName,packageDefaultMethod,deprecation,maskedCatchBlocks,unusedLocals,unusedArguments,unusedImport</warn> --> 
      </configuration> 
      <executions> 
      <execution> 
       <!-- IMPORTANT --> 
       <phase>process-sources</phase> 
       <goals> 
       <goal>compile</goal> 
       <goal>test-compile</goal> 
       </goals> 
      </execution> 
      </executions> 
      <dependencies> 
      <dependency> 
       <groupId>org.aspectj</groupId> 
       <artifactId>aspectjtools</artifactId> 
       <version>${aspectj.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.aspectj</groupId> 
       <artifactId>aspectjweaver</artifactId> 
       <version>${aspectj.version}</version> 
      </dependency> 
      </dependencies> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.5.5</version> 
      <configuration> 
      <appendAssemblyId>false</appendAssemblyId> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      </configuration> 
      <executions> 
      <execution> 
       <id>a-make-assembly</id> 
       <phase>package</phase> 
       <goals> 
       <goal>single</goal> 
       </goals> 
      </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.5.0</version> 
     </plugin> 

     </plugins> 
    </pluginManagement> 

    </build> 

    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${aspectj.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>de.scrum-master.stackoverflow</groupId> 
     <artifactId>common</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
     <groupId>de.scrum-master.stackoverflow</groupId> 
     <artifactId>aspect</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

    <modules> 
    <module>common</module> 
    <module>application</module> 
    <module>aspect</module> 
    </modules> 

</project> 

模塊「常見」:

該模塊包含由兩個「應用」和「方面」,更具體地在TOUT情況下,註釋類中使用的代碼。

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>de.scrum-master.stackoverflow</groupId> 
    <artifactId>main</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>common</artifactId> 

</project> 
package de.scrum_master.common; 

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface YourAnnotation { 
    boolean isRun() default true; 
} 

模塊 「縱橫」:

在這裏,我們只是有縱橫碼。

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>de.scrum-master.stackoverflow</groupId> 
    <artifactId>main</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>aspect</artifactId> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>de.scrum-master.stackoverflow</groupId> 
     <artifactId>common</artifactId> 
    </dependency> 
    </dependencies> 

</project> 
package de.scrum_master.aspect; 

import de.scrum_master.common.YourAnnotation; 
import org.aspectj.lang.ProceedingJoinPoint; 
import org.aspectj.lang.annotation.Around; 
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Pointcut; 

@Aspect 
public class YourAspect { 
    @Pointcut("@annotation(yourAnnotationVariableName)") 
    public void annotationPointCutDefinition(YourAnnotation yourAnnotationVariableName) { 
    } 

    @Pointcut("execution(* *(..))") 
    public void atExecution() { 
    } 

    @Around("annotationPointCutDefinition(yourAnnotationVariableName) && atExecution()") 
    public Object aroundAdvice(ProceedingJoinPoint thisJoinPoint, YourAnnotation yourAnnotationVariableName) throws Throwable { 
    if (yourAnnotationVariableName.isRun()) { 
     Object result; 
     try { 
     System.out.println("Before " + thisJoinPoint); 
     result = thisJoinPoint.proceed(); 
     } catch (Throwable t) { 
     throw t; 
     } finally { 
     System.out.println("After " + thisJoinPoint); 
     } 
     return result; 
    } 
    return thisJoinPoint.proceed(); 
    } 
} 

模塊 「應用」:

該模塊包含應用程序代碼。它配置了Exec Maven和Maven Assembly插件。此外,將「aspect」模塊定義爲AspectJ Maven的一個方面庫。

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>de.scrum-master.stackoverflow</groupId> 
    <artifactId>main</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>application</artifactId> 

    <build> 
    <plugins> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <mainClass>de.scrum_master.app.MainClass</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <configuration> 
      <mainClass>de.scrum_master.app.MainClass</mainClass> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     <configuration> 
      <aspectLibraries> 
      <aspectLibrary> 
       <groupId>de.scrum-master.stackoverflow</groupId> 
       <artifactId>aspect</artifactId> 
      </aspectLibrary> 
      </aspectLibraries> 
     </configuration> 
     </plugin> 

    </plugins> 
    </build> 

    <dependencies> 
    <dependency> 
     <groupId>de.scrum-master.stackoverflow</groupId> 
     <artifactId>common</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>de.scrum-master.stackoverflow</groupId> 
     <artifactId>aspect</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
    </dependency> 
    </dependencies> 
</project> 
package de.scrum_master.app; 

import de.scrum_master.common.YourAnnotation; 

public class MainClass { 
    public static void main(String[] args) { 
    MainClass yourClass = new MainClass(); 
    yourClass.yourMethodAround(); 
    } 

    @YourAnnotation 
    public void yourMethodAround() { 
    System.out.println("Executing TestTarget.yourMethodAround()"); 
    } 
} 

生成日誌:

[email protected] MINGW64 ~/Documents/java-src/SO_AJ_MavenMultiModuleProblem 
$ mvn clean install 

(...) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] main ............................................... SUCCESS [ 0.241 s] 
[INFO] common ............................................. SUCCESS [ 0.970 s] 
[INFO] aspect ............................................. SUCCESS [ 1.058 s] 
[INFO] application ........................................ SUCCESS [ 0.607 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.111 s 
[INFO] Finished at: 2017-04-07T17:15:39+02:00 
[INFO] Final Memory: 23M/378M 
[INFO] ------------------------------------------------------------------------ 

運行日誌:

[email protected] MINGW64 ~/Documents/java-src/SO_AJ_MavenMultiModuleProblem 
$ cd application/ 

[email protected] MINGW64 ~/Documents/java-src/SO_AJ_MavenMultiModuleProblem/application 
$ mvn exec:java 
(...) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building application 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- exec-maven-plugin:1.5.0:java (default-cli) @ application --- 
Before execution(void de.scrum_master.app.MainClass.yourMethodAround()) 
Executing TestTarget.yourMethodAround() 
After execution(void de.scrum_master.app.MainClass.yourMethodAround()) 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
(...) 

[email protected] MINGW64 ~/Documents/java-src/SO_AJ_MavenMultiModuleProblem/application 
$ java -jar target/application-1.0-SNAPSHOT.jar 
Before execution(void de.scrum_master.app.MainClass.yourMethodAround()) 
Executing TestTarget.yourMethodAround() 
After execution(void de.scrum_master.app.MainClass.yourMethodAround()) 

更新:我將整個示例項目推到GitHub repository

+0

這是一個很好的解決方案!我會在一段時間嘗試。我喜歡這樣做的是我在父pom上運行mvn clean isntall,並且所有這些都被編譯。但是如果我的某個模塊有不同的配置文件會發生?如何在這種情況下指定它?現在我乾淨安裝-Pprofile,但在這種情況下,我會運行在父,而不是在孩子。 謝謝! – Motomine

+0

我不明白這個問題。如果使用'-Pprofile'運行主版本,配置文件將應用於該配置文件所在的所有模塊。 – kriegaex

+0

我不知道。因爲配置文件只存在於一個模塊中,而不存在於其他模塊中。我認爲我背後有一個竅門。我會試試看 !謝謝! – Motomine

相關問題