forked from qt-creator/qt-creator
QbsProjectManager: Provide classpath data to Java language server
Change-Id: Idf09ae566139a752184defe26fee082af8be31aa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -56,6 +56,7 @@ const char AndroidMkSpecAbis[] = "AndroidMkSpecAbis"; // QStringList
|
||||
const char AndroidSoLibPath[] = "AndroidSoLibPath"; // QStringList
|
||||
const char AndroidTargets[] = "AndroidTargets"; // QStringList
|
||||
const char AndroidApplicationArgs[] = "AndroidApplicationArgs"; // QString
|
||||
const char AndroidClassPaths[] = "AndroidClassPath"; // QStringList
|
||||
|
||||
// For qbs support
|
||||
const char AndroidApk[] = "Android.APK"; // QStringList
|
||||
|
||||
@@ -291,16 +291,29 @@ void JLSClient::updateProjectFiles()
|
||||
return;
|
||||
const FilePath packageSourceDir = FilePath::fromVariant(
|
||||
node->data(Constants::AndroidPackageSourceDir));
|
||||
FilePath sourceDir = packageSourceDir.pathAppended("src");
|
||||
if (!sourceDir.exists())
|
||||
return;
|
||||
|
||||
FilePath sourceDir = packageSourceDir.pathAppended("src/main/java");
|
||||
if (!sourceDir.exists()) {
|
||||
sourceDir = packageSourceDir.pathAppended("src");
|
||||
if (!sourceDir.exists()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
sourceDir = sourceDir.relativeChildPath(projectDir);
|
||||
|
||||
const QStringList classPaths = node->data(Constants::AndroidClassPaths).toStringList();
|
||||
|
||||
const FilePath &sdkLocation = AndroidConfigurations::currentConfig().sdkLocation();
|
||||
const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget);
|
||||
const FilePath androidJar = sdkLocation / QString("platforms/%2/android.jar")
|
||||
.arg(targetSDK);
|
||||
FilePaths libs = {androidJar};
|
||||
libs << packageSourceDir.pathAppended("libs").dirEntries({{"*.jar"}, QDir::Files});
|
||||
|
||||
for (const QString &path : classPaths)
|
||||
libs << FilePath::fromString(path);
|
||||
|
||||
generateProjectFile(projectDir, qtSrc, project()->displayName());
|
||||
generateClassPathFile(projectDir, sourceDir, libs);
|
||||
}
|
||||
|
||||
@@ -219,6 +219,22 @@ QVariant QbsProductNode::data(Id role) const
|
||||
qbsAbis << archToAbi[architecture];
|
||||
return qbsAbis;
|
||||
}
|
||||
|
||||
if (role == Android::Constants::AndroidPackageSourceDir) {
|
||||
return m_productData.value("properties").toObject()
|
||||
.value("sourceDirectory").toString();
|
||||
}
|
||||
|
||||
if (role == Android::Constants::AndroidClassPaths) {
|
||||
QStringList paths;
|
||||
for (const auto &p : m_productData.value("module-properties").toObject()
|
||||
.value(Constants::JAVA_ADDITIONAL_CLASSPATHS).toArray()) {
|
||||
if (p.isString())
|
||||
paths << p.toString();
|
||||
}
|
||||
return paths;
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ const char CPP_PLATFORMLINKERFLAGS[] = "cpp.platformLinkerFlags";
|
||||
const char CPP_VCVARSALLPATH[] = "cpp.vcvarsallPath";
|
||||
const char XCODE_DEVELOPERPATH[] = "xcode.developerPath";
|
||||
const char XCODE_SDK[] = "xcode.sdk";
|
||||
const char JAVA_ADDITIONAL_CLASSPATHS[] = "java.additionalClassPaths";
|
||||
|
||||
// Settings page
|
||||
const char QBS_SETTINGS_CATEGORY[] = "K.Qbs";
|
||||
|
||||
@@ -372,6 +372,7 @@ void QbsSession::insertRequestedModuleProperties(QJsonObject &request)
|
||||
"cpp.useObjcPrecompiledHeader",
|
||||
"cpp.useObjcxxPrecompiledHeader",
|
||||
"cpp.warningLevel",
|
||||
"java.additionalClassPaths",
|
||||
"qbs.architecture",
|
||||
"qbs.architectures",
|
||||
"qbs.sysroot",
|
||||
|
||||
Reference in New Issue
Block a user