मेरे पास मेवेन प्रोजेक्ट है जिसमें मुख्य पीओएम मॉड्यूल है, उदाहरण के लिए Main. मुख्य में दो पोम-मॉड्यूल होते हैं: "कोर" और "ऐप"। "कोर" में जार-मॉड्यूल "ए", "ऐप" में जार-मॉड्यूल "बी" शामिल है मेरे पास अगली कक्षाएं हैं:

  1. app.B.src.main.java.di.AModule.kt //निर्भरता इंजेक्शन मॉड्यूल
  2. app.B.src.main.java.domain.App.java //main app
  3. core.A.src.main.java.domain.BModule.kt // अन्य इंजेक्शन

जब मैं App.java में AModule.kt और BModule.kt आयात करता हूं, तो ऐसा लगता है:

import di.AModule;
import di.BModule;

मावेन इंस्टाल-फेज को पूरा नहीं कर सकता है और आयात एमॉड्यूल की ओर इशारा करते हुए कहता है कि "प्रतीक नहीं मिल सकता", जो कि अर्थ की दृष्टि से App.java के करीब है।

इस समस्या को ठीक करने के लिए मुझे pom-files या संकुल के साथ क्या करना चाहिए?

पी.एस. इसके अलावा मुझे एक समस्या है कि मावेन परीक्षण-चरण के दौरान core.A.src.test.java.SomethingTest.kt नहीं देखता है

1
ShpilevojArsenij 27 अक्टूबर 2021, 00:24
1
दूसरे आयात में di.BModule कहाँ से आता है? आप केवल एक di.AModule (1.) और एक domain.BModule (3.) का उल्लेख करते हैं।
 – 
Gerold Broser
27 अक्टूबर 2021, 01:16
क्या आपने A को B के POM में <dependency> घोषित किया था?
 – 
Gerold Broser
27 अक्टूबर 2021, 01:29
Core.A.src.main.java.di.BModule.kt*
 – 
ShpilevojArsenij
27 अक्टूबर 2021, 09:36
क्या app.B.src.main.java.di, आदि वास्तव में आपकी पैकेज संरचना है?
 – 
Gerold Broser
27 अक्टूबर 2021, 12:58

1 उत्तर

सबसे बढ़िया उत्तर

आपकी परियोजनाएँ (आपके प्रश्न के अनुसार क्या निकाला जा सकता है):

+- Main
   +- core
      +- src/main/java
      |  +- di
      |     +- AModule.kt
      +- target
      |  +- A.jar
      +- pom.xml ... <artifactId>A
   +- app
      +- src/main/java
      |  +- domain
      |     +- App.java
      |     +- BModule.kt
      +- target
      |  +- B.jar
      +- pom.xml ... <artifactId>B

प्रोजेक्ट A और B एक दूसरे से स्वतंत्र हैं। दोनों एक <module> Main में से आप उन्हें एक ही बार में बना सकते हैं (बिल्डिंग Main के माध्यम से)।

App में AModule को संदर्भित करने में सक्षम होने के लिए आपको B के POM में इसके JAR A को <dependency> के रूप में घोषित करना होगा:

    ...
    <artifactId>B</artifactId>
    ...
    <dependencies>
        <dependency>
            <groupId>...</groupId>
            <artifactId>A</artifactId>
            <version>...</version>
        </dependency>
    ...

<packaging> प्रकार के प्रोजेक्ट जिनमें कोड होता है, और उन्हें एक आर्टिफैक्ट बनाना चाहिए, jar, war, आदि, pom नहीं।

विभिन्न स्रोत प्रकारों को अलग करने की भी सिफारिश की जाती है जैसे:

   ...
   +- app
   |  +- src/main
   |     +- java
   |     |  +- domain
   |     |     +- App.java
   |     +- kotlin
   |        +- domain
   |           +- BModule.kt
   ...
0
Gerold Broser 27 अक्टूबर 2021, 12:55
अपनी तैयार की गई संरचना को सही करना चाहते हैं: कोर में जार-पैकेजिंग मॉड्यूल A है जिसमें src...AModule और core पोम-पैकेजिंग है। ऐप में जार-पैकेजिंग B है जिसमें src...BModule और App, और ऐप< है /b> पोम-पैकेजिंग है। मैंने app/pom.xml में संपूर्ण कोर-मॉड्यूल पर निर्भरता की घोषणा की और app/B में A-मॉड्यूल पर निर्भरता भी घोषित की /pom.xml
 – 
ShpilevojArsenij
27 अक्टूबर 2021, 09:52
<packaging>pom के साथ प्रोजेक्ट में कोड संकलित, परीक्षण, आदि नहीं है और कोई आर्टिफैक्ट नहीं बनाया गया है। यह पैकेजिंग प्रकार केवल मूल परियोजनाओं के लिए है जिसमें (उप-) <module> के लिए विरासत की घोषणाएं शामिल हैं। A और B के पैकेजिंग प्रकार को jar में बदलें।
 – 
Gerold Broser
27 अक्टूबर 2021, 12:45