簡體   English   中英

在 Liferay 中部署服務構建器時出現 Gradle 錯誤

[英]Gradle error when deploying service builder in liferay

嘗試在本地主機上運行自定義服務構建器時遇到錯誤。 Gradle 給出此錯誤:

MESSAGE Problem with deploying bundle: gogo: BundleException: Could not resolve module: com.liferay.trotspots.web [1569]
  Unresolved requirement: Import-Package: com.liferay.asset.constants; version="[1.1.0,2.0.0)"

然而奇怪的是在模塊 com.liferay.trotspot.web 我沒有導入 com.liferat.asset.constants。 這是我為模塊構建的 gradle 文件:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'eclipse'

sourceCompatibility = 1.8
targetCompatibility = 1.8

//Need for Windows
def defaultEncoding = 'UTF-8'

dependencies {
    compile group: "biz.aQute.bnd", name: "biz.aQute.bndlib", version: "3.5.0"
    compile group: "org.apache.poi", name: "poi"
    compile group: "org.apache.poi", name: "poi-ooxml"
    compile group: "org.apache.poi", name: "poi-ooxml-schemas"

    compileOnly group: "com.liferay.portal", name: "release.portal.api"

    compileOnly group: "com.liferay", name: "com.liferay.application.list.api"
    compileOnly group: "com.liferay", name: "com.liferay.asset.api"
    compileOnly group: "com.liferay", name: "com.liferay.asset.display.page.api"
    compileOnly group: "com.liferay", name: "com.liferay.asset.display.page.item.selector.api"
    compileOnly group: "com.liferay", name: "com.liferay.asset.info.display.api"
    compileOnly group: "com.liferay", name: "com.liferay.asset.taglib"
    compileOnly group: "com.liferay", name: "com.liferay.comment.taglib"
    compileOnly group: "com.liferay", name: "com.liferay.frontend.taglib"
    compileOnly group: "com.liferay", name: "com.liferay.frontend.taglib.clay"
    compileOnly group: "com.liferay", name: "com.liferay.frontend.taglib.soy"
    compileOnly group: "com.liferay", name: "com.liferay.frontend.taglib.util"
    compileOnly group: "com.liferay", name: "com.liferay.info.api"
    compileOnly group: "com.liferay", name: "com.liferay.item.selector.api"
    compileOnly group: "com.liferay", name: "com.liferay.item.selector.criteria.api"
    compileOnly group: "com.liferay", name: "com.liferay.item.selector.taglib"
    compileOnly group: "com.liferay", name: "com.liferay.petra.reflect"
    compileOnly group: "com.liferay", name: "com.liferay.petra.string"
    compileOnly group: "com.liferay", name: "com.liferay.petra.function"
    compileOnly group: "com.liferay", name: "com.liferay.trash.api"
    compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel"
    compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib"
    compileOnly group: "javax.portlet", name: "portlet-api"
    compileOnly group: "javax.servlet.jsp", name: "jsp-api"
    compileOnly group: "jstl", name: "jstl"
    compileOnly group: "org.apache.felix", name: "org.apache.felix.http.servlet-api", version: "1.1.+"
    compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"
    compileOnly group: 'org.slf4j', name: 'slf4j-api', version: '1.7.+'
    compileOnly project(":modules:trots:trots-api")
    compileOnly project(":modules:trots:trots-service")
}

api 和服務模塊出現相同的錯誤,但使用不同的包。 我想如果我知道如何解決這個錯誤,我會對另外兩個做同樣的事情。 我嘗試將特定版本添加到“com.liferat.asset.api”package 但這沒有任何改變。 有誰知道我還能做些什么來解決這個錯誤?

隨着包括

compileOnly group: "com.liferay.portal", name: "release.portal.api"

您應該能夠從構建文件中省略任何和所有與 Liferay 相關的依賴項(至少所有 com.liferay 分組的,但可能所有沒有版本簽名的依賴項)

話雖如此,如果您缺少傳遞依賴項,那可能是因為您的工作區針對的是比您實際運行的版本更舊的版本。 由於 7.4 的滾動更新,您應該針對您的目標版本進行編譯。

確保您的工作區設置 (gradle.properties) 包含您要編譯的正確版本 - 例如:

liferay.workspace.product=portal-7.4-ga41

如果您仍然為 GA1 編譯,但在 GA41 上部署,您可能會遇到這類問題。 通常,您可以通過幾個版本有所不同,但偶爾(當您剛剛遇到 package 升級了一個版本的版本時),您需要點擊正確的版本。

還有一個不相關的代碼審查問題:您應該確保任何與服務構建器相關的代碼依賴於您的-api模塊,而不依賴於-service實現。 如有必要,將常用代碼/接口添加到您的 API 或第三個捆綁包中,以保持您的依賴關系干凈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM