LenoMinkus commented on issue #15365:
URL: https://github.com/apache/dubbo/issues/15365#issuecomment-3074196944

   Title: Generated protobuf sources not picked up by Maven build  
   Body (English):
   
   > **Summary**  
   > When using the current `dubbo-maven-plugin` to compile `.proto` files, the 
generated Java sources are placed under  
   > `target/generated-sources/protobuf/java`, but Maven only scans the 
standard `src/main/java` directory during `package`.  
   > As a result, the generated classes are not included in the final JAR 
unless an extra step is taken.
   
   > **Suggestion**  
   > 1. Extract `.proto` files into a dedicated Maven module.  
   > 2. Let the `dubbo-maven-plugin` generate sources in that module.  
   > 3. Consume the generated stubs from other modules via a normal Maven 
dependency.
   
   > **Fix**  
   > Add the following dependency and plugin so Maven automatically adds the 
generated folder to the compile classpath:
   
   ```xml
    <dependencies>
           <dependency>
               <groupId>org.apache.dubbo</groupId>
               <artifactId>dubbo-rpc-triple</artifactId>
               <version>${dubbo.version}</version>
           </dependency>
           <!-- protobuf core -->
           <dependency>
               <groupId>com.google.protobuf</groupId>
               <artifactId>protobuf-java</artifactId>
               <version>${protobuf.version}</version>
           </dependency>
       </dependencies>
   
       <build>
           <plugins>
               <plugin>
                   <groupId>org.apache.dubbo</groupId>
                   <artifactId>dubbo-maven-plugin</artifactId>
                   <version>${dubbo.version}</version> <!-- 3.3.0及以上版本 -->
                   <configuration>
                       <!-- 参考下文可配置参数 -->
                       
<outputDir>${project.build.directory}/generated-sources/protobuf/java</outputDir>
                       
<protoSourceDir>${basedir}/src/main/proto</protoSourceDir>
                       <!--proto编译器组件-->
                       <!--protobuf-java的版本-->
                       <protocVersion>${protobuf.version}</protocVersion>
                       <!--代码生成类型       可填tri或者tri_reactor 服务定义-->
                       <dubboGenerateType>tri</dubboGenerateType>
                   </configuration>
                   <executions>
                       <execution>
                           <goals>
                               <goal>compile</goal>
                           </goals>
                       </execution>
                   </executions>
                   <!-- 添加os-maven-plugin用于自动检测系统类型 -->
                   <dependencies>
                       <dependency>
                           <groupId>kr.motd.maven</groupId>
                           <artifactId>os-maven-plugin</artifactId>
                           <version>1.7.0</version>
                       </dependency>
                   </dependencies>
               </plugin>
               <plugin>
                   <groupId>org.codehaus.mojo</groupId>
                   <artifactId>build-helper-maven-plugin</artifactId>
                   <version>3.5.0</version>
                   <executions>
                       <execution>
                           <id>add-source</id>
                           <phase>generate-sources</phase>
                           <goals><goal>add-source</goal></goals>
                           <configuration>
                               <sources>
                                   <!-- 与 dubbo-maven-plugin 的 outputDir 保持一致 
-->
                                   
<source>${project.build.directory}/generated-sources/protobuf/java</source>
                               </sources>
                           </configuration>
                       </execution>
                   </executions>
               </plugin>
   <!--            <plugin>-->
   <!--                <groupId>org.xolstice.maven.plugins</groupId>-->
   <!--                <artifactId>protobuf-maven-plugin</artifactId>-->
   <!--                <version>0.6.1</version>-->
   <!--                <configuration>-->
   <!--                    
<protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>-->
   <!--                    <protocPlugins>-->
   <!--                        <protocPlugin>-->
   <!--                            <id>dubbo</id>-->
   <!--                            <groupId>org.apache.dubbo</groupId>-->
   <!--                            <artifactId>dubbo-compiler</artifactId>-->
   <!--                            <version>0.0.4.1-SNAPSHOT</version>-->
   <!--                            
<mainClass>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator</mainClass>-->
   <!--                        </protocPlugin>-->
   <!--                    </protocPlugins>-->
   <!--                </configuration>-->
   <!--                <executions>-->
   <!--                    <execution>-->
   <!--                        <goals>-->
   <!--                            <goal>compile</goal>-->
   <!--                        </goals>-->
   <!--                    </execution>-->
   <!--                </executions>-->
   <!--            </plugin>-->
           </plugins>
   
       </build>
   
   > **Environment**  
   > - Dubbo version: 3.3.0  
   > - Maven: 3.9.x  
   > - JDK: 17
   some photos


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org
For additional commands, e-mail: notifications-h...@dubbo.apache.org

Reply via email to